如果我bin/console doctrine:schema:update --force
,结果是:
更新数据库架构...
数据库架构更新成功! " 1"查询已执行
每次运行update
命令时都会这样做。
所以,bin/console doctrine:schema:validate
我看到了:
[Mapping] OK - 映射文件正确 [Database] FAIL - 数据库模式与当前映射文件不同步。
Doctrine想要执行的查询是相同的(bin/console doctrine:schema:update --dump-sql
):
ALTER TABLE coo_users CHANGE id id VARCHAR(255) NOT NULL;
发生了什么?似乎Doctrine希望进行任何修改,因为它希望每次都可以通过无限修改将字段id
再次更改为字段id
。
映射
/**
* @ORM\Id
* @ORM\Column(type="string", unique=true)
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
答案 0 :(得分:1)
发现错误!
问题是列类型设置为string
,而必须为integer
。
由于我使用了需要string
字段的自定义生成器,因此设置为string
。当我删除自定义生成器时,我没有将字段类型更改回integer
,因此Doctrine每次都想编辑该字段。