propel-gen insert-sql不丢失数据?

时间:2010-10-29 21:57:01

标签: sql propel

是否可以制作

propel-gen insert-sql

没有丢失以前的数据?这有什么黑客攻击吗?

我通常只是在编辑schema.xml的表中添加或删除一些行,执行:

propel-gen
propel-gen sql
propel-gen insert-sql

这会消除所有数据,这很烦人!

2 个答案:

答案 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的开发版本来获得这些功能。

Brief documentation of the new features

Download 1.5.3-devel from SVN (will be 1.6 when done)