gpt4 book ai didi

mysql - Doctrine 模式更新总是尝试添加 NOT NULL

转载 作者:可可西里 更新时间:2023-11-01 06:34:00 25 4
gpt4 key购买 nike

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

执行doctrine:schema:update --force后,我可以看到
数据库架构更新成功!执行了“x”个查询

这是我的问题:即使我多次执行它,学说总能找到架构差异。

通过--dump-sql,我可以看到所有这些查询都与:

  • string 主键上添加 NOT NULL
  • 在日期时间添加 NOT NULL领域

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

这是单个属性/列的示例:

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

这是 SHOW CREATE TABLE my_entity; 的结果:

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 ;

这里查询学说尝试使用 doctrine:schema:update 命令执行:

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

有什么想法吗?

最佳答案

此问题已在 2017 年至少报告过 here , herehere应该由这个 PR 修复.

更新 doctrine/dbal 将是解决方案(not working for me though):

$ composer require doctrine/dbal:^2.7.1

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

如果一个人正在使用迁移,他仍然可以手动调整它们(但他的架构将始终不同步)。

关于mysql - Doctrine 模式更新总是尝试添加 NOT NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42536911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com