数据库管理系统 (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 –