【发布时间】:2015-12-24 13:51:55
【问题描述】:
我有一张供应商表格,其结构如下:
注意提供者字段。现在是VARCHAR。我必须从另一个开发人员那里支持这个系统,现在我们需要提供提供者列表并存储其他信息,所以我创建了另一个表来实际存储提供者。
结构如下:id、name、margin、outer_name等
我打算将提供者的类型更改为INT(32),它将指向提供者表。
问题在于 MySQL 不支持更改数据库结构的事务。
如果我将字段类型从字符串更改为整数,我会丢失所有以前的数据。如果中间出现问题。我迷路了。
可以使用序列化将数据转储到文件并从那里读取它们吗?
有没有更好的方法?
【问题讨论】:
-
最安全的方法:mysqldump到文件,编辑文件更改字段定义,保存到单独的dump文件。加载修改后的转储,如果发生故障,您将原始转储作为后备。
-
你能不能添加一个额外的字段,比如 provider_id,它引用你的新表结构,执行你的迁移并基本上并排运行两个系统。一旦您感到满意,就没有问题(条目可能在两个字段中都有值?)删除或空白旧的“提供者”字段。
-
Graeme,对我来说似乎是最简单的解决方案。无需创建新表。可能有必要为更复杂的情况创建一个新表,但正是在这种情况下,我认为没有必要。如果您将其发布为答案,我会接受它
标签: mysql sql sql-update migration alter-table