Migration Prope正在删除数据库列,而不仅仅是重命名它

Migration Prope正在删除数据库列,而不仅仅是重命名它,migration,field,rename,propel,Migration,Field,Rename,Propel,我正在寻找有关propel迁移功能的帮助 如果该字段已在schema.xml中重命名,则删除该字段并使用新名称创建另一个字段 购买此选项将导致指定列的数据丢失。。。我怎样才能防止propel这样做 我的测试用例如下: 在schema.xml中创建名为“title”的字段 在数据库中插入数据 将字段“title”重命名为“name” 正在从数据库发出select命令 以前插入“标题”字段的数据现在为空 当查看迁移类时,它包含: ALTER TABLE `city` ADD ( `

我正在寻找有关propel迁移功能的帮助

如果该字段已在schema.xml中重命名,则删除该字段并使用新名称创建另一个字段

购买此选项将导致指定列的数据丢失。。。我怎样才能防止propel这样做

我的测试用例如下:

  • 在schema.xml中创建名为“title”的字段
  • 在数据库中插入数据
  • 将字段“title”重命名为“name”
  • 正在从数据库发出select命令
以前插入“标题”字段的数据现在为空

当查看迁移类时,它包含:

ALTER TABLE `city`

  ADD
(
    `title` VARCHAR(255) NOT NULL
),

  DROP `name`;

在XML中更改列名时,Propel(或任何其他工具)无法知道您已重命名该列,或者是否要删除旧列并添加新列

它将XML与数据库区分开来,并在数据库中看到XML(标题)中不存在的列,因此删除该列。然后,它会在XML中看到一个数据库中不存在的列(名称),因此它会为您创建列标题


如果要重命名该列,应手动执行此操作。

在XML中更改列名时,Propel(或任何其他工具)无法知道您已重命名该列,或者是否要删除旧列并添加新列

它将XML与数据库区分开来,并在数据库中看到XML(标题)中不存在的列,因此删除该列。然后,它会在XML中看到一个数据库中不存在的列(名称),因此它会为您创建列标题


如果要重命名该列,应手动执行此操作。

在XML中更改列名时,Propel(或任何其他工具)无法知道您已重命名该列,或者是否要删除旧列并添加新列

它将XML与数据库区分开来,并在数据库中看到XML(标题)中不存在的列,因此删除该列。然后,它会在XML中看到一个数据库中不存在的列(名称),因此它会为您创建列标题


如果要重命名该列,应手动执行此操作。

在XML中更改列名时,Propel(或任何其他工具)无法知道您已重命名该列,或者是否要删除旧列并添加新列

它将XML与数据库区分开来,并在数据库中看到XML(标题)中不存在的列,因此删除该列。然后,它会在XML中看到一个数据库中不存在的列(名称),因此它会为您创建列标题


如果要重命名列,应该手动执行此操作。

我知道这是一个非常老的问题,但解决此问题的简单方法是在xml中重命名列,然后生成差异。之后,进入生成的迁移并修改它以重命名列,而不是删除和添加列。然后,当您运行迁移时,它将正常工作

如果您的数据库引擎是MySQL,则代码如下

更改表格“表格名称” 将“第1列”更改为“第2列”[“数据类型”]


我知道这是一个非常老的问题,但解决这个问题的简单方法是在xml中重命名列,然后生成差异。之后,进入生成的迁移并修改它以重命名列,而不是删除和添加列。然后,当您运行迁移时,它将正常工作

如果您的数据库引擎是MySQL,则代码如下

更改表格“表格名称” 将“第1列”更改为“第2列”[“数据类型”]


我知道这是一个非常老的问题,但解决这个问题的简单方法是在xml中重命名列,然后生成差异。之后,进入生成的迁移并修改它以重命名列,而不是删除和添加列。然后,当您运行迁移时,它将正常工作

如果您的数据库引擎是MySQL,则代码如下

更改表格“表格名称” 将“第1列”更改为“第2列”[“数据类型”]


我知道这是一个非常老的问题,但解决这个问题的简单方法是在xml中重命名列,然后生成差异。之后,进入生成的迁移并修改它以重命名列,而不是删除和添加列。然后,当您运行迁移时,它将正常工作

如果您的数据库引擎是MySQL,则代码如下

更改表格“表格名称” 将“第1列”更改为“第2列”[“数据类型”]


然后对数据库进行反向工程?问题是phpName没有改变,Prope可以依靠它来检测列重命名……不过phpName并没有存储在数据库中。diff功能不区分新旧XML,而是区分XML和当前数据库。如果您有多个部署,您可以将您的差异用于任何数据库。我同意这将是有用的,但实现这一点也有它自己的挑战。然后对我的数据库进行反向工程?问题是phpName没有改变,Prope可以依靠它来检测列重命名……不过phpName并没有存储在数据库中。diff功能不区分新旧XML,而是区分XML和当前数据库。如果您有多个部署,您可以将您的差异用于任何数据库。我同意这将是有用的,但实现这一点也有它自己的挑战。然后对我的数据库进行反向工程?问题是phpName没有改变,Prope可以依靠它来检测列重命名……不过phpName并没有存储在数据库中。diff功能不区分新旧XML,而是区分XML和当前数据库。如果您有多个部署,您可以将您的差异用于任何数据库。我同意这会很有用,但它有自己的一套