是否可以制作
propel-gen insert-sql
没有丢失以前的数据?这有什么黑客攻击吗?
我通常只是在编辑schema.xml的表中添加或删除一些行,执行:
propel-gen
propel-gen sql
propel-gen insert-sql
这会消除所有数据,这很烦人!
答案 0 :(得分:1)
为了实现这一点,Propel应该知道发生了什么变化并且只执行了这些变化。例如,如果更改列的名称,Propel只会看到新架构,无法知道您是刚刚更改了名称还是删除了旧列并添加了新列。
您希望迁移,或将数据库从一个版本“更新”到另一个版本。 Propel 1.6 (not yet released) will have this built-in,但有an older Symfony plugin that adds simple migration support。您编写SQL查询以自行更改数据库。这不像你想要的那样自动化,但它可能意味着它仍然可以与当前版本的Symfony和Propel一起使用。
答案 1 :(得分:1)
正如Jan所说,Propel正在实现一个“迁移”功能,但更重要的是,这与“sql-diff”功能相结合,允许您生成用于更改表的SQL(而不是删除和重新添加)。这两个功能在1.6之前不会“正式”发布,但你可以使用1.5.3的开发版本来获得这些功能。