【发布时间】:2017-08-24 10:04:03
【问题描述】:
我从远程服务器的工作台备份了数据库。因此,当我在本地环境中导入它时出现错误:
错误 1193 (HY000):未知系统变量“GTID_PURGED”
我正在使用 xampp 服务器
通过控制台或 phpmyadmin 导入 db 得到相同的错误
【问题讨论】:
标签: mysql
我从远程服务器的工作台备份了数据库。因此,当我在本地环境中导入它时出现错误:
错误 1193 (HY000):未知系统变量“GTID_PURGED”
我正在使用 xampp 服务器
通过控制台或 phpmyadmin 导入 db 得到相同的错误
【问题讨论】:
标签: mysql
需要删除所有带有 GTID_PURGED 的行
sed -i '/@@GLOBAL.GTID_PURGED=/d' your_file.sql
最终文件将毫无问题地加载
【讨论】:
pv db-dumps/mysql-backup.sql.gz | zcat | sed '/@@GLOBAL.GTID_PURGED=/d' | mysql database_name
mysql -f -u username -p database_name < file.sql
@@GLOBAL.GTID_PURGED 值通常是多行的,所以这个解决方案可能不会像它那样经常工作.而是需要这样的模式:sed '/@@GLOBAL.GTID_PURGED=/,/;$/d'.
花了很多时间之后。
我在文本编辑器中打开了我的数据库文件并搜索了这个变量“GLOBAL.GTID_PURGED”。我只是设置它的值“”
喜欢
SET @@GLOBAL.GTID_PURGED=""
然后我现在通过 Windows 控制台上传数据库它就像一个魅力:)
【讨论】:
通过附加--set-gtid-purged=OFF 选项重新创建转储文件将解决问题。
这是因为GTIDs是在MySQL 5.6中添加的,早期版本无法识别。
您的命令可能如下所示:
mysqldump -u username -ppassword -h mydbhost --set-gtid-purged=OFF db_name > dump_file.sql
关于我的故事,我遇到了源自 MySQL 5.7 的转储文件的相同问题。我正在尝试使用默认的 MariaDB 安装将数据导入新的 CentOS 7 安装,即 5.5(我猜)。
我想到的第一个想法是升级到最新的 MariaDB。幸运的是,他们的网站提供了a great utility 来帮助设置 Linux 变体的包存储库。另外,digitalocean 有一个非常简短清晰的guide 用于升级过程,也感谢他们!
虽然升级到最新的 MariaDB 稳定版 10.2 并不能解决这个问题。所以我仍然必须使用上面提到的选项,但无论如何它让我升级到最新的 MariaDB。
我升级后的另一个问题是,最新的 MariaDB 不再支持来自 my-innodb-heavy-4G.cnf 的 innodb_additional_mem_pool_size 配置,服务器无法启动。从 MySQL 文档中,它已从 MySQL 5.7 中删除。我可以在注释掉它后启动服务器。我不是数据库专家,我不会花更多时间来检查 MariaDB 版本与 MySQL 数据库的准确映射,以及它们之间的区别。
【讨论】:
mysqldump: unknown variable 'set-gtid-purged=OFF'?
请按照以下步骤解决此问题。
这对我有用,我希望这对你也有用。
【讨论】:
您还可以从 MySQL 工作台设置 set-gtid-purged=OFF,在运行转储之前,单击高级选项并将 set-gtid-purged 下的 AUTO 更改为 OFF。运行转储,恢复到不同的 MySQL 版本应该没有问题。
【讨论】:
如果这是一个大型数据库,加载文件并对其进行编辑可能会很棘手。这是我的做法:
less -N dump.sql 找到了行号。它在第 24 行。sed -i '24s/SET/\#SET/' dump.sql评论了那行。mysql 命令起作用了。【讨论】: