Mysql数据库的常见错误处理办法

3826
4

1505121235 数据老手Lv5

发表于2019-11-18 18:15

楼主
1.上传文件到服务器.

Cause: com.esen.jdbc.pool.impl.mysql.MysqlPooledSQLException: Packet for query is too large (5099474 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.

问题原因:批量插入数据量过大

解决办法:修改 my.ini 加上 max_allowed_packet =67108864,67108864=64M
默认大小4194304,也就是4M
修改完成之后要重启mysql服务,如果通过命令行修改就不用重启mysql服务。
命令修改:(即时生效)
正确写法:
设置为500M
mysql> set global max_allowed_packet = 500*1024*1024;
或者
mysql> set global max_allowed_packet = 524288000;

查看mysql的max_allowed_packet大小,运行
show VARIABLES like '%max_allowed_packet%';


2.  设置数据库不区分大小写
在/etc/my.ini中添加参数:
lower_case_table_names=1   

3.恢复服务器报错Cause: com.esen.jdbc.pool.impl.mysql.MysqlPooledSQLException: The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size. Increase the redo log size using innodb_log_file_size.
问题原因:数据库表中某些字段太大,如longtext类型的数据,数据库缓冲区过小导致的。

解决方案:在mysql的/etc/my.ini(如果没有可以将mysql的.ini文件复制到/etc下面),文件中加上参数:
innodb_log_file_size=640M
max_allowed_packet = 64M

-----------------------------------------------------------------------------------------------------------------------------------------------------------
以上内容抛转引玉,有更多常见mysql数据库使用场景报错和解决方案,欢迎楼下跟帖讨论。













最近看过此主题的会员

esen_55E7PPVBUQ

chestnut

ssssssss

Amazing-wen

esen_4Y9DI376AS

yamaha

hhdtest

esen_4PI055C3LR

gelin

4个回答

只看楼主

wut 数据老手Lv5

发表于2019-11-18 18:22

只看该作者

取消 关注该作者的回复

沙发

实用

tangmq 数据达人Lv4

发表于2019-11-26 16:40

只看该作者

取消 关注该作者的回复

板凳

mysql数据库,部署报错,specified key was too long       
把数据库的字符集从utf8mb4改成了utf8

1505121235 数据老手Lv5

发表于2019-12-5 11:49

只看该作者

取消 关注该作者的回复

地板

mysql数据库链接测试失败
测试失败,无法获得数据库链接.
java.sql.SQLException: Access denied for user 'root'@'WIN-PPSQN4RPHP9' (using password: YES)
Access denied for user 'root'@'WIN-PPSQN4RPHP9' (using password: YES)
解决办法:
mysql针对用户的授权还需要针对机器
grant all privileges on *.* to 'root'@'自己的机器名或者ip' identified by '密码'
这个sql在用户能连上去的环境上执行,ip不行的话换机器名试
原因:
MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用。所以为了安全,其他ip的设备需要连root,就需要授权

1505121235 数据老手Lv5

发表于2020-4-17 12:00

只看该作者

取消 关注该作者的回复

5#

本帖最后由 1505121235 于 2020-4-17 14:25 编辑

使用mysql作为系统库部署


原因:mysql数据库时间字段不允许插入0值,默认会有:NO_ZERO_IN_DATENO_ZERO_DATE 两个值,限制字段不能为零日期。登录mysql数据库通过命令查看:show variables like '%sql_mode%'查看是否含有NO_ZERO_IN_DATENO_ZERO_DATE。
解决办法:
(1)修改mysql配置文件,去掉上面两个参数,在mysqld中添加
sql_mode=NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES
修改后重启mysql服务,通过show variables like '%sql_mode%' 查询之后没有NO_ZERO_IN_DATE 和 NO_ZERO_DATE即修改成功。
(2)直接在mysql命令行修改,set @@global.sql_mode=(select replace(@@global.sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));此种方法修改后,重启服务会失效,需要重新设置。



登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号