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 就可以了。