我正在尝试在数据库优先实现上使用 Doctrine 2.3.2 建立一个项目。生成 xml 和映射后,然后调用 orm:validate-schema 它显示映射是正确的,但数据库验证失败。在使用架构工具查找我的问题时,我发现 2 个问题一遍又一遍地重复:
- 将我所有不在 255 的 varchar 更改为 varchar(255)
- 删除我的主键,例如列(A、B、C),然后以不同的顺序(B、A、C)创建具有相同列的新主键
这两件事似乎都没有任何改变的意义。为什么 Doctrine 会强迫我以看似毫无意义的方式改变我的模式?
在不更改数据库架构的情况下解决这两个问题的方法是:
- 转换映射似乎没有将长度属性添加到 id 字段 - 将其添加到 xml
- 这似乎是由表中列的顺序与主键中的列顺序之间的差异引起的。重新排序 xml 条目的顺序以匹配主键的顺序。
不得不 2 #1 我假设是一个错误 - 我将很快报告。但是,#2 上面是一个错误还是在某种程度上改变了 Doctrine 的逻辑?