【问题标题】:ERROR 1193 (HY000): Unknown system variable 'GTID_PURGED'错误 1193 (HY000): 未知系统变量 'GTID_PURGED'
【发布时间】:2017-08-24 10:04:03
【问题描述】:

我从远程服务器的工作台备份了数据库。因此,当我在本地环境中导入它时出现错误:

错误 1193 (HY000):未知系统变量“GTID_PURGED”

我正在使用 xampp 服务器

通过控制台或 phpmyadmin 导入 db 得到相同的错误

【问题讨论】:

    标签: mysql


    【解决方案1】:

    需要删除所有带有 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
    • 附加变体使用-f,例如:mysql -f -u username -p database_name < file.sql
    • 你能补充一点关于这些 GTID_PURGED 行何时有用的信息吗?
    • 这个答案的编辑队列已经满了,但是 @@GLOBAL.GTID_PURGED 值通常是多行的,所以这个解决方案可能不会像它那样经常工作.而是需要这样的模式:sed '/@@GLOBAL.GTID_PURGED=/,/;$/d'.
    【解决方案2】:

    花了很多时间之后。

    我在文本编辑器中打开了我的数据库文件并搜索了这个变量“GLOBAL.GTID_PURGED”。我只是设置它的值“”

    喜欢

    SET @@GLOBAL.GTID_PURGED=""
    

    然后我现在通过 Windows 控制台上传数据库它就像一个魅力:)

    【讨论】:

    • 我刚刚把那行注释掉了,效果很好。
    • 我刚刚删除了该行并且它起作用了:-)
    • xampp 中的数据库文件...在哪里??我正面临这个问题
    【解决方案3】:

    通过附加--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.cnfinnodb_additional_mem_pool_size 配置,服务器无法启动。从 MySQL 文档中,它已从 MySQL 5.7 中删除。我可以在注释掉它后启动服务器。我不是数据库专家,我不会花更多时间来检查 MariaDB 版本与 MySQL 数据库的准确映射,以及它们之间的区别。

    【讨论】:

    • MariaDB 似乎对这个选项一点也不感兴趣,因为即使是 10.4 也会抱怨。这个标志很有帮助。
    • 让我回应 @tadman — 我从 MySQL 导出到 MariaDB 时遇到了同样的问题(两者都在各自的最新日期)。您的回答巧妙地为我解决了问题! ??
    • 这个命令给了我mysqldump: unknown variable 'set-gtid-purged=OFF'?
    【解决方案4】:

    请按照以下步骤解决此问题。

    1. 在 notepad++/notepad 中打开您的 DB 转储
    2. 搜索 SET @@GLOBAL.GTID_PURGED="[一些值将在此处]"
    3. 只需从数据库转储中删除此 [SET @@GLOBAL.GTID_PURGED=""]
    4. 保存您的数据库转储并立即尝试导入。

    这对我有用,我希望这对你也有用。

    【讨论】:

      【解决方案5】:

      您还可以从 MySQL 工作台设置 set-gtid-purged=OFF,在运行转储之前,单击高级选项并将 set-gtid-purged 下的 AUTO 更改为 OFF。运行转储,恢复到不同的 MySQL 版本应该没有问题。

      【讨论】:

      • 这对我来说就像一个魅力。
      【解决方案6】:

      如果这是一个大型数据库,加载文件并对其进行编辑可能会很棘手。这是我的做法:

      1. 我用less -N dump.sql 找到了行号。它在第 24 行。
      2. 然后我用sed -i '24s/SET/\#SET/' dump.sql评论了那行。
      3. 最后,导入数据库转储的mysql 命令起作用了。

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        • 1970-01-01
        相关资源
        最近更新 更多