MySQL中是否可以撤销ALTER表操作?

4

不知道是否可能,我将VARCHAR列更改为Decimal类型,现在想要回滚。因为它将所有浮点值混合为整数,例如2.00变成了200。有没有办法撤消我最后一次表更改?请给予建议。


2
你最好的办法是恢复在你运行 ALTER 语句之前的备份。 - Chris Peters
很遗憾,我没有做任何备份。 - RanaHaroon
抱歉,唯一的解决方法是将其转换回VARCHAR,然后手动修复值。我知道可能无法确定200是2.00还是20.0或200. :( - Chris Peters
2
"不幸的是,我没有做任何备份。希望这会成为一个好教训,今后在进行更改之前一定要备份数据。如果您正在编写应用程序,将SQL脚本存储在源代码控制中也是很好的实践,这样您就可以得到以前运行的历史记录。" - ADyson
1个回答

4

不,您无法撤消 ALTER TABLE 语句。

https://dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html

一些语句无法回滚。通常,这些包括数据定义语言(DDL)语句,例如创建或删除数据库的语句,创建、删除或更改表或存储例程的语句。
(强调是我的)
正如Chris Peters在上面评论中所述,您可以执行相反的ALTER TABLE操作,然后使用UPDATE语句清理数据。

这个答案值得更多的赞赏...在我找到它之前,我浪费了很多时间试图弄清楚为什么我的回滚在数据库迁移工具中失败了。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接