MySQL 常见错误

MySQL疑难杂症

1.group by不能使用错误-1055

# 查询sql_mode值
select @@sql_mode
# 将查到的值去掉only_full_group_by项,将其他项添加到my.ini配置文件中(Ubuntu在/etc/mysql/mysql.conf.d/mysqld.cnf)
sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2.插入错误-1146

代码搬到服务器上突然不能跑,如下

(1146, "Table 'liuliang.ods_offline_customs_distribution_gTradeData' doesn't exist")

仔细检查一番发现是除了第一张表的表名是小写外,后边名字却写成大写了,而服务器严格识别大小写,因此报表不存在。

3.插入表情错误-1366

插入错误如下:

(1366, "Incorrect string value: '\\xF0\\x9F\\x98\\xB1\\xE6\\xB2...' for column 'TITLE' at row 1")

原因是数据库默认编码设置为 utf-8 了,因此需要将编码设置为 utf8mb4,这里敲重点,数据库的编码分为三层:数据库——>数据表——>数据列,每个都可以指定其编码,很多教程上边都没说清到底是修改那个编码,这里分为两种情况:

  1. 数据库在已建立的情况下且编码设置为 utf-8 ,此时你的库、表、列的编码都是 utf-8 编码,倘若一味只修改库或者表的编码你会发现还是插不进去,因为此时只是修改的局部。解决办法是直接寻找表里那个字段包含表情,将其对应列修改为utf8mb4 即可插入。
  2. 数据库未建立但是已知该表包含表情字段,在建表时直接设置编码为 utf8mb4 即可。
为什么使用 utf8mb4 编码?

utf8 编码最多存入3个字节,而 emoji 表情是四个字节,而 utf8mb4utf8的超集即扩展集,它可以存入基本多文本平面的 Unicode 字符包括不常用的汉字和新增的 Unicode 字符, emoji 是一种特殊的 Unicode 字符,因此对应的编码应为 utf8mb4

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值