vi data.sql
:
-- MariaDB dump 10.19 Distrib 10.4.28-MariaDB, for Win64 (AMD64)
但当我这样做时,head -n 10 data.sql
我得到的第一行是
��-- MariaDB dump 10.19 Distrib 10.4.28-MariaDB, for Win64 (AMD64)
因此我在导入时得到了这个:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '??-' at line 1
那么我该如何纠正这个问题?
答案1
获取文件开头的十六进制数;参见https://mysql.rjweb.org/doc.php/charcoll#bom_byte_order_markBOM 是什么样子的。否则,检查https://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored代表“黑钻石”。
如果是 BOM,请尝试让生成它的产品停止,以某种方式删除前 3 个字节。
答案2
我通过在 vi 中打开 sql 文件解决了这个问题
:set fileencoding=utf-8
:wq
答案3
它看起来像是编辑器添加的 BOM 或其他垃圾,你可以使用以下命令在文件中屏蔽它
echo -n --xx | dd conv=notrunc of=data.sql
这只是用 SQL 注释覆盖字节,Mysql(或 Mariadb)将会忽略它。