Mysql导入时出现错误ERROR at line 1: Unknown command '\-'.

数据库管理系统 (DBMS) MariaDB 和 MySQL 彼此非常兼容(至少在基本功能上)。直到最近,还可以毫无问题地将数据库从 MariaDB 导入和导出到 MySQL,反之亦然。

如果您已将 MariaDB 更新到最新版本,则在将数据库导入 MySQL 或旧版本的 MariaDB 时可能会收到以下错误:

ERROR at line 1: Unknown command '\-'.

好消息是这个错误很容易修复。

该错误是由包含导入的数据库或表的文件中的以下注释行引起的:

/*!999999\- enable the sandbox mode */

也就是说,错误是由位于注释中的字符序列“\-”引起的,MySQL 服务器将其视为本服务器不知道的命令。可以删除该注释行(以及任何其他注释),而不会丢失任何重要数据。

您可以手动打开包含数据库的 .sql 文件以导入并删除此行(这是第一行)。

由于有问题的行是数据库导入文件中的第一行,因此可以在命令行中使用以下命令将其删除(将 DB.sql 替换为数据库文件的名称):

sed -i '1d' DB.sql

注:此命令会删除文件的第一行

导入从 MariaDB 11.4.2(以及可能的更高版本)导出的数据库时会出现此问题。

我没有找到任何以 MariaDB 设置或选项形式的永久解决方案(这样我就不必每次都删除第一行)。

将表和数据库导出到phpMyAdmin时,即使使用MariaDB也不会出现此问题。仅当使用 mariadb-dump 导出时才会出现此问题。

如果您想在一个命令中执行第一行的导出和删除操作,那么这是可以的。

例如,导出命令

mariadb-dump -u root -p TestDB TestTABLE > testdb.sql

您需要用以下命令替换它,这也会将导出的数据库保存到文件中,但有问题注释的第一行将被删除:

mariadb-dump -u root -p TestDB TestTABLE | sed '1d' > testdb.sql

在此命令中:

-u root 是用户名(将 root 替换为您的实际用户名)
-p 提示输入数据库用户密码
TestDB 是数据库名称
TestTABLE 是导出表的名称(如果不指定,则导出所有表)
testdb.sql 是将保存导出的数据库的文件的名称。

如果您愿意,可以将压缩添加到导出的数据库以存档命令:

mariadb-dump -u root -p TestDB TestTABLE | sed '1d' | zip testdb.zip –

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注