【问题标题】:ERROR 1231 (42000) with sql_mode when trying to import a sql dump in MySQL Workbench尝试在 MySQL Workbench 中导入 sql 转储时使用 sql_mode 出现错误 1231 (42000)
【发布时间】:2019-08-25 11:52:26
【问题描述】:

我正在尝试将数据库的转储导入 MySQL Workbench 中的本地主机。 在尝试将 MySQL 5.7 版本的转储导入 8.0.14 版本时,我收到此错误:

第 198 行出现错误 1231 (42000):变量 sql_mode 无法设置为 NO_AUTO_CREATE_USER 的值

操作失败,退出代码1

问题是转储的大小为 4GB,我无法打开它,因为我的电脑死机了。有没有办法去掉这条线或者解决这个问题?

【问题讨论】:

  • 您可能无法在任何常规文本编辑器中打开它,但您可以对引起问题的特定行进行搜索替换。 perlsed 之类的工具可以轻松做到这一点。您是否尝试将转储从较新版本的 MySQL 加载到较旧版本的 MySQL 中?请记住 mysqldump 有很多选项,因此您可以禁用部分有问题的转储。
  • 我正在尝试将旧版本 MySQL 的转储文件运行到新版本。如何禁用这部分代码?
  • 本地升级是否可行?如果您可以使版本同步,则该过程通常会更加顺畅。 8.0 中发生了很多变化,但升级应该足够无缝。
  • 可以在没有本地数据库的情况下升级它吗?
  • 或者更好地使用 --force 选项,如下所示:mysql -u root -pxxxx --force 你也可以添加要使用的数据库

标签: mysql sql mysql-workbench


【解决方案1】:

您似乎点击了this MySQL 8.0 bug。错误页面说它已在 8.0.13 中修复,但由于您使用的是 8.0.14 并且仍然遇到问题,因此可能不是这种情况...

它还提出了一种解决方法:将所有 ,NO_AUTO_CREATE_USER 实例替换为空。如果由于文件太大而无法使用文本编辑器打开文件,则可以使用 Perl 使用正则表达式更新文件,例如:

perl -pi -e 's/,NO_AUTO_CREATE_USER//g' file

标志说明:

  • -e 导致 Perl 代码被执行
  • -p 表示:执行每个文件行的代码
  • -i 表示:就地编辑文件

【讨论】:

  • 我在 PerlCritic 桌面应用程序或 MySQL Workbench 中执行此操作?
猜你喜欢
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-05
  • 1970-01-01
相关资源
最近更新 更多