MySQL数据库排错细节

1、错误:Data truncated for column 'grade' at row 1

原因:字段类型的长度不够、类型不匹配、插入的数据不合法造成的, 比如:乱码,超出字段长度,非法字符等,好好检查数据类型。例如某次出现这个错误是前端传递参数“2”,数据库中相应字段值是“第二节”,就是由于使用了enum类型后数据匹配不上导致的。

2、错误:mysql查询报错Subquery returns more than 1 row

原因:子查询返回1条以上的结果。主查询的一条记录如果对应了子查询的多条记录,导致报错。

解决方法:①采用limit 1。

                  ②采用any。例如:

SELECT * FROM table_name_1 WHERE table_name_1.column1 = any(SELECT column1 FROM table_name_2)

3、错误:当运行项目后,出现deny access拒绝访问数据库

原因:项目的配置文件与实际使用的访问IP不一致。可打开MySQL数据库的user表查看当前数据库中使用的用户名和端口号。若MySQL有127.0.0.1和localhost两个地址,如果配置文件配的是127.0.0.1而不是localhost,就必须使用MySQL的127.0.0.1的IP地址。

4、错误:A query was run and no Result Maps were found for the Mapped Statement  '***'.  It's likely that neither a Result Type nor a Result Map was specified.

原因:mybatis使用的xml文件中没有添加参数类型。

解决方法:正常的参数情况是:id="*****" parameterType="Dto" resultType="Dto"

5、错误:必须为元素类型 "delete" 声明属性 "resultType"

原因:SQL语句是写的select查询,但是mapper里写的却是delete。

解决方法:将delete改成select,保持类型一致就可以了。

6、错误:Operand should contain 1 column(s)

原因:in条件后面的子查询查询了多个字段。

解决方法:in条件后面的子查询中只查询出需要的那个字段即可。

7、错误:在windows系统中利用命令行(cmd)安装MySQL,在mysql的bin目录下面执行: mysqld --install

报错信息如下:Install/Remove of the Service Denied

解决方法:打开cmd.exe程序的时候选择“用管理员身份打开”。

8、错误:用查询结果作为匹配条件去查询更多数据时,客观上应该存在结果集但是最后一条数据都没有。

原因:第一次查询时结果为空,那就会导致最后一条数据都查不出来,因为没有什么值是和null匹配的。

解决方法:用ifnull()函数将第一次查询中结果为null的值变为0。

9、错误:Expression #*** of SELECT list is not  in  GROUP BY clause and contains nonaggregated column '*****' which is not functionally dependent on columns in  GROUP BY clause; this is incompatible with sql_mode = only_full_group_by

原因:SQL语句与使用的sql_mode不兼容,其实就是在这种模式下,select子句查询的字段,只要是没有用聚集函数的,都必须要放在group by关键字的后面,记住:是所有没有使用聚集函数的字段。

解决方法:将select子句查询的字段,只要是没有用聚集函数的,都放在group by关键字的后面即可。

10、错误:SQLSTATE[08004] [1040] Too many connections.

原因:现有MySQL服务器支撑不了大量的业务访问需求,MySQL默认的最大连接数为100,在大量访问的时候连接不上数据库。

解决方法:要么增加MySQL服务器,要么使用缓存服务器,减少MySQL服务器的压力,这是治本之法。下面的解决办法是治标之法:

①、如果MySQL数据库使用my.cnf文件配置,找到文件 /etc/my.cnf,用编辑器打开,修改max_connections的值为10000。实际MySQL服务器允许的最大连接数16384。set-variable = max_connections=10000

②、如果MySQL数据库使用my.ini文件配置,找到文件/bin/my.ini(不一定在这里,根据你的数据库情况),在[mysqld]里面增加max_connections=10000,如果原来就有,那么可以修改max_connections的值。

③、重启mysql数据库。

11、错误:Lost connection to MySQL server during query

原因:查询期间数据库连接断开。

解决方法:在my.ini配置文件 mysqld 节点下添加 max_allowed_packet = 100M 就可以了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值