我已经从 phpMyAdmin 导出了一个数据库(仅结构),我想将其用作脚本的基础,该脚本可以更新同一数据库结构的先前版本并添加列和表(如果它们不存在)。
例如,如果 CREATE TABLE 语句如下所示:
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(52) NOT NULL,
`password` varchar(40) NOT NULL,
`dev` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21;
如何调整此设置,以便如果表中的字段不存在,即使数据库中已存在该表,也会创建该字段。
此脚本的目的是允许更新现有数据库,添加可能丢失的列,但不应删除任何表或字段。
最佳答案
根据this ,似乎完成此操作的最简单方法是创建一个临时表(我不一定指的是 TEMPORARY 类型,只是使用时间较短且有限;尽管在大多数情况下,这里 TEMPORARY 类型可能是一个合理的选择),将数据从旧表复制到临时表,使用更新后的结构创建新表,然后从临时表中恢复所有内容。最后,您的脚本可能会将旧表重命名为备份,或者完全删除它和临时表。
关于mysql - 创建非破坏性 mysql 查询,能够创建表或更新缺少字段的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517863/