【发布时间】:2016-01-16 03:21:01
【问题描述】:
下午好, 我有许多完全备份我的数据库(表结构、数据和过程)的旧备份文件(使用 mysqldump 创建)。 现在我必须将表中的 CHAR(5) 列更改为 VARCHAR(7),但我希望我的旧备份与新结构兼容。我可以只从这些旧备份中恢复数据吗? 对于未来,我已经将我的 php 脚本更改为仅使用 mysqldump 中的 --no-crete-info 选项备份数据。
非常感谢 卢卡
【问题讨论】:
下午好, 我有许多完全备份我的数据库(表结构、数据和过程)的旧备份文件(使用 mysqldump 创建)。 现在我必须将表中的 CHAR(5) 列更改为 VARCHAR(7),但我希望我的旧备份与新结构兼容。我可以只从这些旧备份中恢复数据吗? 对于未来,我已经将我的 php 脚本更改为仅使用 mysqldump 中的 --no-crete-info 选项备份数据。
非常感谢 卢卡
【问题讨论】:
为什么不将 mysql 转储上传到 PhpMyAdmin,然后使用编辑结构选项卡将列从 CHAR(5) 更改为 VARCHAR(7)。如果您不太确定如何编辑文件转储,这似乎是您最简单的选择。
【讨论】:
处理这种数据定义更改的最佳方式是在原地进行。
ALTER TABLE mytable MODIFY mycolumn VARCHAR(5);
然后你就可以开始运行了。您可以再次启动您的应用程序,并且可以进行另一次备份。最后你可能想要发出这个命令。
UPDATE mytable SET mycolumn = TRIM(mycolumn)
处理旧列值中潜在的尾随空格。
【讨论】: