mysql 运维常见问题,mysql常见问题汇总

今天fahao改版上线,发现数据库中插入字段报错:

Data too long for column ‘number’ at row 1

尝试着插入2条成功,但是插入500条的时候就会报这个错误,查询了大量资料,都说是要修改字符编码为utf8或者将sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION注释掉可以解决,my.cnf修改成utf8字符编码操作如下:

[mysqld]

character_set_server=utf8

collation-server=utf8_general_ci

……

[client]

#设置客户端字符集

default-character-set=utf8

修改完成后测试仍然报错,查看字符编码命令:

mysql> show variables like ‘%char%’;

+————————–+———————————-+

| Variable_name | Value |

+————————–+———————————-+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/local/mysql/share/charsets/ |

+————————–+———————————-+

8 rows in set (0.00 sec)

如果找不到my.cnf可以通过

mysql –help | grep my.cnf

去寻找my.cnf文件。

最后修改my.cnf中的max_allowed_packet = 16M 这个参数解决,默认值是1M,关于这个参数的具体意思是:

mysql根据配置文件会限制server接受的数据包大小。

有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。

我插入的数据大于了1M,所以导致插入失败,出现了上述的报错。

查看目前配置

mysql> show VARIABLES like ‘%max_allowed_packet%’;

+————————–+————+

| Variable_name | Value |

+————————–+————+

| max_allowed_packet | 16777216 |

| slave_max_allowed_packet | 1073741824 |

+————————–+————+

2 rows in set (0.00 sec)

2015.06.17 程序更新数据库中的字段,导致mysql卡死,服务器负载过高,解决方法,最后将修改的表重新回滚到最近的一个备份点,其中遇到了一些问题,如下:

重启mysql发现下面报错:

04419d1ac7b1cc02efc57dbd8db8e842.png

出现上面的问题,查了相关资料,说是端口被占用,但是 ps -ef |grep mysql 和 netstat -luntp |grep 3306没有发现有程序运行在3306端口上,然后有人说是权限问题,查看了文件都是mysql的用户和组,配置文件中也没有bind 127.0.0.1 3306的配置,最后更换成3307端口,发现重启mysql成功,研究了下,最后使用netstat -an |grep 3306 发现有个php-fpm的进程占用了3306端口,可能是php-fpm正在往mysql传数据,结果重启mysql,导致php-fpm卡死在127.0.0.1:3306端口上,kill对应进程后,重启mysql恢复

在回滚导入备份数据的时候发现如下报错:

baadf8a813058ae75af308dda4f927a8.png

查询资料说是需要在对应的库中执行:

flush tables;

执行完后发现导入仍然报错,最后的解决办法是:

1.关闭mysql服务

2.找到对应的数据库文件,打开你对应的数据库名的文件夹,查看要导入的表的文件,还有损坏的文件,一并删除

3.数据库中的文件名,应该是和你的表名一一对应的,一个表,两个文件,一个数据文件,一个是日志文件,除了这个还有一个“db.opt”文件不要删除。其他的乱码的文件,和原来你出错的文件全部删除。

4.完了以后重新启动mysql服务,重新导入要回滚的表即可

版权属于:

运维之道

转载时必须以链接形式注明原始出处及本声明。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值