近年来都在使用MariaDB。为了与MySQL兼容,有些MySQL存在的问题,MariaDB也存在。
最典型的错误就是 utf8。MySQL最初的utf8支持有问题,所说是因为MySQL的utf8实现搞得太早,而utf8的标准还不完善,后来标准完善了,MySQL的utf8实现有局限,导致utf8的支持有问题。具体而言,就是MySQL的utf8只支持3字节的字符,而utf8的字符有3字节的/4字节的。后来MySQL搞了个utf8mb4来支持标准的utf8。
我们经常需要在数据库之间导入导出,或者数据库备份导入导出。数据中经常会含有汉字,而我们又基本上使用utf8mb4,这导致导入的时候MariaDB或MySQL报语法错。解决方法是在导入的时候指定字符集为utf8mb4就可以了。例如:
mysql -hlocalhost -uroot -p --default-character-set=utf8mb4 < backup.sql
这个问题之前已经遇到过,但是因为用得少,老是忘记,所以记录一下。再遇到的时候就来这里翻一下就好。