今天遇到一个需求,为防止原数据被损坏,我准备先备份一份表数据出来,方便回滚.
复制表的命令不常用,也没记住就百度了一下.只想说句各种不看谱.当然看文档是最好的.
其实主要就是 2 步就可以解决问题.
2 步是最靠谱的.因为有的时候 mysql 有很多权限不允许你一些非常规操作,比如如下这条 sql 在很多时候是没有执行权限的.
CREATE TABLE new_table_name SELECT [field1,field2... | *] FROM old_table_name
运维一般会禁止这样的操作,会报如下错误一般:
CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.
推荐使用如下方法去执行备份表数据的操作.
CREATE TABLE IF NOT EXISTS new_table_bak (LIKE old_table);
INSERT INTO new_table_bak SELECT * FROM old_table;
参考
https://stackoverflow.com/questions/2949653/select-into-and-undeclared-variable-error
本文介绍了一种可靠的MySQL表数据备份方法,避免了因权限限制导致的CREATETABLE...SELECT操作失败问题。通过CREATETABLEIFNOTEXISTS和INSERTINTO...SELECT*FROM两步操作,有效备份数据,确保数据安全。
271

被折叠的 条评论
为什么被折叠?



