我正在尝试将较旧的(〜版本 5)服务器导入 MariaDB docker 容器。
我使用 mysqldump 命令(使用 --all-databases)创建了一个转储,当我尝试导入它时,我收到以下错误:
ERROR 1050 (42S01) at line 2071: Table 'user' already exists
我正在尝试使用标准命令导入一个全新的容器:
mysql -uroot -p < [sqldump].sql
当谈到 SQL 时,我是一个新手,我想知道我是否遗漏了一些明显的东西,或者是否存在一些真正的不兼容。
我非常感谢您的建议。
谢谢!
听起来您的转储脚本想要覆盖包含用户和权限信息的系统“mysql”数据库。如果这确实是您想要做的,您可以使用该选项
mysqldump
再次运行,然后在导入之后运行。不过我不建议这样做,尤其是在数据库运行不同版本的情况下。--add-drop-database
FLUSH PRIVILEGES
更好的选择是通过将名称传递给参数来明确选择要导出的数据库
--databases
,不包括“mysql”、“information_schema”和“performance_schema”等数据库。然后,您将根据需要向新导入的数据库授予权限。另一个快速的选择是在文本编辑器中编辑现有的转储文件,然后取出想要创建“mysql”表的部分(包括“user”和其他)。
该问题与 Docker 无关,可能不属于服务器故障。答案在这里:https ://dba.stackexchange.com/a/285253/93071