新闻资讯

新闻资讯 媒体报道

MySQL异常问题解决方案小结

编辑:016     时间:2022-09-28

1.Mysql中文存储乱码

默认编码latin1,需修改my.conf重启服务
character-set-server = utf8 collation-server=utf8_general_ci
设置是否成功,可用以下命令查看: SHOW VARIABLES LIKE 'character_set_%' SHOW VARIABLES LIKE 'collation_%' 

2.Mysql emoji表情数据存储异常

使用Emoji表情时应注意,普通UTF-8为3字节unicode,而Emoji表情符号是4字节unicode,因此UTF8编码无法存储Emoji,此时需将Mysql服务端编码改为utf8mb4(Mysql5.5.3以上版本支持)
character-set-server = utf8mb4 column字段编码修改方法: ALTER TABLE tablename CHANGE column_name VARCHAR(100) CHARACTER SET utf8mb4;

3.Mysql启动错误:Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist.

解决方法,在mysql的安装时设置datadir与用户目录读写权限
./scripts/mysql_install_db --user=mysql --datadir=/home/work/mysql/data/

4.异常:server: “Host ‘192.168.1.153’ is blocked because of many connection errors.

mysql远程过多的连接错误,会导致远程IP被锁定,无法正常连接,当前IP不容许连接数据库,需执行命令:flush hosts或者mysqladmin flush-hosts。
另外,此问题会导致连接池c3p0抛出异常Connections could not be acquired from the underlying database. 此时可适当加大max_connect_erros的值

5.redmine配置Mysql版本异常问题

rails 4.x.x.x 对应的Mysql2版本为0.3.18 gem install mysql2 -v '0.3.18' 

6.终端命令远程无法连接mysql,错误ERROR 2003 (HY000): Can’t connect to MySQL server on ‘196.168.1.151’ (61)

修改my.cnf,注释掉bind-address=127.0.0.1 #bind-address=127.0.0.1 

7.jdbc写入异常:Data truncation: Incorrect datetime value: ‘2017-03-24 39:00’ for column

原因:Table字段column类型为datetime时,传入的value格式必须符合yyyy-MM-dd HH:mm:ss,修改传入参数格式即可

8.当时字段类型为tinyint时,jdbc写入异常:Data truncation: Out of range value for column

原因:传入参数超过数据类型最大值,tinyint最大值255 bigint:从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。 int:从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
smallint:从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint:从 0255 的整型数据。存储大小为 1 字节。

9.利用sql文件导入批量大数据时,发生异常:ERROR 2006 (HY000): MySQL server has gone away

参考stackoverflow

单行数据过大,需修改参数: max_allowed_packet=64M

10.长度限制,超过最大限制异常:ERROR 1118 (42000): Row size too large.

参考Limits on Table Column Count and Row Size

官方说明:
The MySQL maximum row size limit of 65,535 bytes。每行最大长度65535字节,不包含Text和Blob字段。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐