导出到数据库常见问题

2023年9月5日 35点热度 0人点赞 0条评论

一、连接数据库问题

 

1、在连接数据库时提示:无法连接到指定的数据库,详细信息:Keyword not supported.参数名:!!!Charset。

 

问题原因:请检查数据库密码是否包含了特殊符号

解决方法:建议密码修改为:字母和数字组合。

 

 

 

二、导入数据库问题

 

1、提示:Invalid column type from bcp client for colid x.(从 bcp 客户端收到一个对 colid x 无效的列长度)

 

问题原因:datatable(数据表中)中的colid列x的数据字段长度超过了数据表中定义的字段长度。

解决方法:将数据库该字段的长度增大。

例如,mysql中设置了某字段类型为varchar(255),根据colid x判断是该字段问题要修改字段的长度为varchar(1255),具体的要看该字段采集的字符数多少,要是超过varchar的长度,要改字段类型为文本型longtext  字段长度无效再填写。

 

 

2、导出数据提示:“max_allowed_packet”相关的字眼

 

问题原因:mysql的设置参数中max_allowed_packet过小导致操作异常。

mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)

MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。

查看目前配置:

复制代码 代码如下:

show VARIABLES like '%max_allowed_packet%';

显示的结果为:

+--------------------+---------+
| Variable_name    | Value  |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+ 
以上说明目前的配置是:1M

 

修改方法

① 修改配置文件

可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。

复制代码 代码如下:

max_allowed_packet = 20M

如果找不到my.cnf可以通过 复制代码 去寻找my.cnf文件,代码如下:

mysql --help | grep my.cnf

 

② 在mysql命令行中修改,在mysql 命令行中运行,复制代码 代码如下:

set global max_allowed_packet = 2*1024*1024*10

然后退出命令行,重启mysql服务,再进入。

复制代码 代码如下:

show VARIABLES like '%max_allowed_packet%';

查看下max_allowed_packet是否编辑成功

注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

 

3、导出数据提示: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column 'raw_json' at row 1

 

应用日志显示:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column 'raw_json' at row 1, 异常:org.springframework.jdbc.UncategorizedSQLException:  

 

问题原因:由提示可知,插入的字段里面包含emoji表情符。基本可以判定是字符编码的问题。我们的数据库里面使用的是utf8编码,普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了避免 emoji 表情符号带来的问题、涉及无线相关的 MySQL 数据库建议都提前采用utf8mb4 字符集。

 

解决方法参考链接:https://www.cnblogs.com/janehoo/archive/2016/04/06/5359800.html

解决方法:更换字符集utf8-->utf8mb4,数据库和数据表字段都要同时修改。

 

 

4、导出数据提示: Cannot enqueue Query after fatal error.(发生致命错误后无法将查询排队。)

 

 

解决方法:将每批导出“1000”条改为100或10条,若无法导出正常,判断是数据库的问题参考以下链接修改数据库的参数:

https://www.cnblogs.com/clnchanpin/p/6882001.html

 

5、导出数据提示: 获取数据遇到网络故障,第[retryCount]次失败,read ECONNRESET

解决方法:修改每批次导出的数量,最大不能超过:2000条,要是修改后还提示,可设置批次导出量为1000,100,10条进行测试。

 

 

若一直提示read ECONNRESET

解决方法:查看一下ie浏览器里面的Internet选项里的局域网设置,是否勾选了,取消勾选【自动检测设置】试试

 

 

 

6、手动导出到数据库正常,定时入库报错:Cannot enqueue Query after fatal error

 

原因:数据库字段设置了not null
解决办法:修改数据库字段设置,取消not null设置。

 

365crawadmin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论