我想在现有表(Book)中添加一列(IS_ACTIVE)。所以我相应地扩展了模式文件(schema.xml)。我按照文档中的描述完成了以下命令。
propel-gen om
propel-gen convert-conf
propel-gen sql
我从schema.sql文件中删除了所有不必要的部分,这样只会删除并重新创建受影响的表。然后我执行了:
propel-gen insert-sql
不幸的是,版本表在此过程中尚未更新,产生插入错误,例如此错误
Unable to execute SELECT statement [SELECT book_version.ID, book_version.TITLE,
book_version.URL, book_version.COMMENTS, book_version.IS_ACTIVE,
book_version.VERSION FROM `book_version` WHERE book_version.ID=:p1 ORDER BY
book_version.VERSION DESC LIMIT 1] [wrapped: SQLSTATE[42S22]: Column not found:
1054 Unknown column 'book_version.IS_ACTIVE' in 'field list']
致电
$book->save();
如何在不遇到此问题的情况下正确扩展现有的schema.xml?
答案 0 :(得分:4)
首先将buildtime-conf.xml文件作为runtime-conf.xml上的相同位置创建,内容也与runtime-conf.xml相同。
然后逐个执行命令。
propel-gen convert-conf
我认为这会对你有帮助。
感谢。
答案 1 :(得分:1)
正如所建议的那样,您应该从生成的SQL文件(schema.sql)中剪切任何SQL语句,引用应保持原样的表。但除了引用应该更改的表的语句之外,还需要在此文件中包含引用相应版本表的语句。然后你可以运行
propel-gen insert-sql
这应该可以解决问题。