mysql常见问题汇总

4-30 3,121 views

今天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发现下面报错:

QQ图片20150617155310

出现上面的问题,查了相关资料,说是端口被占用,但是 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恢复

 

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

QQ图片20150617160144

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

flush tables;

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

1.关闭mysql服务

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

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

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

MySQL索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更 好的使用...

阅读全文

Mysql添加删除索引

使用索引,能够提高查询的速度 1、创建索引 1)ALTER TABLE 创建普通索引,UNIQUE索引或者PRIMARY KEY索引 ALTER TABLE table_name ADD INDEX index_name(colu...

阅读全文

nginx反向代理问题汇总及监控脚本

今天配置nginx的反向代理,配置文件如下: worker_processes 1; events { worker_connections 1024;} http { include mime.types; default_type application/...

阅读全文

2 条评论

欢迎留言