在Doctrine2中重命名迁移脚本中的列

时间:2013-07-25 21:42:00

标签: php doctrine-orm

如果我有Table引用并且我在其上调用了renameColumn(),则会出现以下错误:

  

执行期间迁移20130725141653失败。错误表#renameColumn()已删除,因为它会删除并重新创建列。没有可用的修复程序,因为架构差异无法可靠地检测是否重命名了列,或者是否创建了一列而另一列已被删除。

     

[学说\ DBAL \ DBALException]

     

表#renameColumn()已被删除,因为它会删除并重新创建列。没有可用的修复程序,因为架构差异无法可靠地检测是否重命名了列,或者是否创建了一列而另一列已被删除。

(通过doctrine migrations:migrate --dry-run执行)

这对于差异程序来说是有意义的。

我正在写一个迁移。我知道我希望重命名该列(保留数据)。 是否有任何纯粹的Doctrine方法(我不想写一个原始查询)来实现这个?

1 个答案:

答案 0 :(得分:-1)

异常所涉及的'diff'是原始Schema与更新的Schema之间的差异。这就是Doctrine生成SQL语句的方法 - 通过将当前Schema与修改后的Schema进行比较。

Doctrine无法可靠地确定someColumn $originalTable someRenamedColumn $modifiedTable {{1}}中的{{1}}(请原谅错误的伪代码),因此删除了功能