当前位置: 首页 > 知识库问答 >
问题:

条令架构更新始终尝试添加NOTNULL

商同
2023-03-14

我有一个全新的Symfony 2.8安装,带有doctrine和MySQL 5.6堆栈。

执行原则:模式:更新--force后,我可以看到
数据库模式成功更新!"x"查询被执行

这是我的问题:即使我多次执行它,条令总是会发现模式差异。

使用--dump sql,我可以看到所有这些查询都与以下内容相关:

但是,当我检查数据库时,这些列已经有一个NOTNULL。

以下是单个属性/列的示例:

class MyEntity
{
    /**
     * @ORM\Id
     * @ORM\Column(type="string", length=5, name="cd_key")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
     private $code;
     ...  

这是一个SHOW CREATE TABLE my_实体的结果

CREATE TABLE `my_entity` (
  `cd_key` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
  `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `number` int(11) NOT NULL,
  PRIMARY KEY (`cd_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;

在这里,查询原则尝试使用原则执行:模式:更新命令:

ALTER TABLE my_entity CHANGE cd_key cd_key VARCHAR(5) NOT NULL;
  • 我在每次命令执行之间清理Symfony缓存
  • 我尝试在@Column注释上添加nullable=false(如果事件已经定义为@Id),但没有效果
  • a原则:模式:验证未发现任何映射问题(当然同步除外)
  • 我试图删除并重新创建完整的数据库,但没有效果

有什么想法吗?


共有2个答案

龚奇逸
2023-03-14

我也遇到过类似的问题。对于我来说,使用SQL删除表,然后再次运行原则:模式:更新--FORCE对我来说很有效。

似乎做一些SQL请求会混淆教义。

这么说,我假设您已经将@ORM\Table(name=“my_entity”)@ORM\entity(repositoryClass=“myrepository”)放在了类定义之上。

希望有帮助。

罗凯
2023-03-14

该问题已于2017年报告,至少在这里、这里和这里,并应通过本PR予以解决。

更新理论/dbal将是解决方案(但不适用于我):

$ composer require doctrine/dbal:^2.7.1

从配置中取消设置服务器版本(mysql/mariadb)也可以解决这个问题(但对我来说仍然不是这样)。

如果使用迁移,他仍然可以手动调整它们(但是他的模式总是不同步的)。

 类似资料:
  • 我试图安装条带宝石,我得到这个错误 Gem::Ext::BuildError:错误:无法生成Gem本机扩展。 /Users/Fysh/.rvm/rubies/ruby-2.0.0-p643/bin/ruby-r./siteconf20151005-1267-af6sn6.rbextconf.rb检查-lstdc中的main()...*extconf.rb失败*由于某种原因无法创建Makefile,

  • 我尝试使用这个存储库https://github.com/ctongfei/progressbar为我的光线跟踪添加进度条。当我运行测试时,我得到很多异常。 我完全不知道它们是什么意思,也不知道如何开始修复它们。 我的测试代码: 我收到的错误消息: 2019年7月15日9:14:57PM org . jline . utils . log logr警告:无法检索哑色Java . io . io类型

  • 我试图创建一个新的Ionic项目,当我运行命令时: 运行cordova build ios运行命令:/users/nnation/myapp/hooks/after_prepare/010_add_platform_class.js/users/nnation/myapp错误:spawn EACCES at exports._errnoexception(util.js:746:11)at chi

  • 我将 0 到 1000 之间的所有数字相加,这些数字是倍数或 3 和 5。我只是在将它们加起来时遇到麻烦。我不断收到错误消息:线程“main”java.lang.IndexOutOfBounds异常异常:索引:468,大小:468 我的代码 有人知道原因吗?我不明白为什么它不起作用。它打印出数组列表,所以我肯定应该将元素添加在一起……

  • 因此,我一直试图在我的android应用程序中添加启动屏幕,但每当我试图运行它时,应用程序总是崩溃。这里是代码`` activity_splash.xml

  • 我正在尝试从Ansible 2.9升级。2至2.10。我知道当前的ansible需要删除,我相信我在这方面取得了成功。文档中有几个不同的命令行(使用pip安装Ansible)。那个似乎没有出错的人使用了python3,并产生了。。。 但“which ansible”不产生输出,“ansible--version”命令未找到。 使用原始的python(2.7.16)产生... 但仍然没有答案。你知道

  • 我在尝试更新我的Eclipse时出错! 以下是在“安装下载0”期间发生内部错误的错误日志 Java . lang . illegalargumentexception:比较法违反了它的通用契约!at Java . util . comparabletimsort . merge hi(comparabletimsort . Java:835)at Java . util . comparablet

  • 问题内容: 我在这里看到了几个与sqlite更新有关的问题,但无法解决此问题。我无法更新表,它始终为0; 我可以插入和获取数据,但是更新时只有问题。 PS我也试过execSql() 问题答案: 听起来好像没有什么符合您的标准。也许作为测试,您应该通过null作为where条件(这表示更新所有行),并查看是否仍返回0。 如果此后仍返回0,我将确保您实际上已将数据保存在数据库表中。