MySQL常见错误码及其解决方式整理


=Start=

缘由:

整理一下MySQL常见的错误码及其解决方法,方便以后要用的时候参考。

正文:

参考解答:
1、MySQL中的utf8编码和utf8mb4编码

先说结论:

  • MySQL的“utf8”实际上不是真正的“UTF-8”。
  • MySQL的“utf8”是一种“专属的编码”,它能够编码的Unicode字符并不多(只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面(BMP))。
  • MySQL的“utf8mb4”才是真正的“UTF-8”。

MySQL在5.5.3之后增加了utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了(但不支持 Emoji 表情)。

2、Mysql Error 1366: Incorrect string value: ‘\xF0\x9F\x90\xA0’ for column ‘xxx’ at row 1

这通常意味着客户端和服务器之间的字符集设置不一致。

现在的一些聊天记录中时不时会出现一些Emoji表情,所以在建MySQL表存储的时候,需要使用utf8mb4字符集,而非常规的utf8字符集。即,建议普通表使用utf8,如果这个表需要支持emoji就使用utf8mb4。

因此除了在建库建表的时候要注意字符集的设置,在client连接的时候,也要注意字符集的设置要和server端保持一致,否则可能就会出现该错误。

3、Mysql Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

这表示有SQL语法错误。常见原因有:

  • 行尾该有 逗号(,) 没有,最后一行不该有的却有了;
  • 表名、列名建议用 反引号(`) 包裹起来,而不要用单引号/双引号;
  • 字符串中的特殊字符(比如:单引号/双引号)要记得转义。
4、Mysql Error 1264: Out of range value for column

要插入的内容超过了字段能表达的范围。比如:

  • 要插入的字符串长度为 120 ,但是该列的类型为 VARCHAR(100) ;
  • 要插入一个整数 3172978990 到类型为 INT 的字段中,但是因为字段类型的限制,该字段能表示的最大数值为 2147483647(2^31 – 1) 插入时就会报错。

解决办法也很简单,就是将对应的字段类型修改成满足条件的就好。

// 在一条SQL语句中对多个字段类型进行修改
ALTER TABLE qqgroup MODIFY COLUMN group_id BIGINT,
MODIFY COLUMN sender_id BIGINT,
MODIFY COLUMN message_id BIGINT,
MODIFY COLUMN `sender_nickname` varchar(100),
MODIFY COLUMN `message` varchar(1500);
参考链接:

=END=


发表回复

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