mysql命令行导入数据遇到ERROR 1231 (42000)错误的解决办法

网上搜索这个错误其实有很多答案,也基本都一样。但是有些文章有问题。

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

查看目前配置:
代码如下:

show VARIABLES like '%max_allowed_packet%';
mysql> show VARIABLES like '%max_allowed_packet%';
+---------------------------+------------+
| Variable_name             | Value      |
+---------------------------+------------+
| max_allowed_packet        | 67108864   |
| mysqlx_max_allowed_packet | 67108864   |
| slave_max_allowed_packet  | 1073741824 |
+---------------------------+------------+
3 rows in set, 1 warning (0.00 sec)

我的这里是64M,默认是没有这么大的。

修改方法:

1、修改配置文件

可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
代码如下:
max_allowed_packet = 64M

如果找不到my.cnf可以通过
代码如下:
mysql --help | grep my.cnf

去寻找my.cnf文件。
linux下该文件在/etc/下。

2、在mysql命令行中修改

直接这样修改会错误(这也是网上大部分文章错误的地方):

mysql> set  max_allowed_packet=16MB;
ERROR 1232 (42000): Incorrect argument type to variable 'max_allowed_packet'

正确更改方式:

set global max_allowed_packet = 2*1024*1024*10

然后退出命令行,重启mysql服务,再进入。
代码如下:

show VARIABLES like '%max_allowed_packet%';

查看下max_allowed_packet是否编辑成功

将txt文件导入mysql数据库的过程需要使用到mysql命令行工具和相应的命令。 首先,需要打开命令行工具,并登录mysql服务器。在登录成功后,可以看到mysql的提示符。在提示符下输入以下命令: ``` LOAD DATA INFILE '/path/to/file.txt' INTO TABLE table_name; ``` 其中,path/to/file.txt为需要导入的txt文件的路径,table_name为需要将数据导入的表的名称。这个命令会将txt文件中的数据导入到指定的表中。需要注意的是,这个命令中的路径必须使用正斜杠(/),而不是反斜杠(\)。 如果txt文件中的每一行数据都是以相同的分隔符分隔的,可以使用以下命令: ``` LOAD DATA INFILE '/path/to/file.txt' INTO TABLE table_name FIELDS TERMINATED BY '\t' (field1, field2, field3, ...); ``` 其中,\t代表数据的分隔符。field1, field2, field3等代表需要导入的表中的字段。这个命令会将txt文件中的每一行数据根据分隔符分隔成对应的字段,并插入到指定的表中。 在执行以上命令时,如果出现“ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement”的错误,需要在命令中加入LOCAL关键字,如下: ``` LOAD DATA LOCAL INFILE '/path/to/file.txt' INTO TABLE table_name; ``` 以上是在mysql命令行导入txt文件的方法。需要注意的是,在导入之前需要检查txt文件的格式是否正确,并确保表结构与txt文件中的数据一致。同时,在导入数据之前,也需要备份好之前的数据,以便出现问题时可以还原数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能-肥鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值