1

我想将一列 (IS_ACTIVE) 添加到现有表 (Book)。所以我相应地扩展了模式文件(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 而不会遇到这种情况?

4

2 回答 2

4

首先在 runtime-conf.xml 上创建一个 buildtime-conf.xml 文件作为相同位置,并且内容也与 runtime-conf.xml 相同。

然后在命令下面一一运行。

  1. 推进差异

  2. 推动迁移

  3. 产卵

  4. propel-gen 转换配置

    我想这会对你有所帮助。

谢谢。

于 2013-04-15T04:45:02.757 回答
1

正如建议的那样,您应该从生成的 SQL 文件 (schema.sql) 中删除所有引用应该保持原样的表的 SQL 语句。但是除了引用应该更改的表的语句之外,引用相应版本表的语句也必须包含在此文件中。然后你可以运行

propel-gen insert-sql

这应该可以解决问题。

于 2013-03-08T16:05:37.013 回答