ERROR 1406 (22001) at line 13: Data too long for column ‘gender‘ at row 1

mysql导入SQL脚本的时候报ERROR 1406 (22001) at line 13: Data too long for column ‘gender’ at row 1的错误。

一.背景

1.1.SQL脚本

我们要执行如下的SQL脚本将数据导入到我们的MySQL数据库中。

CREATE DATABASE school;
USE school;
/*----------学生信息表----------*/
CREATE TABLE `student` (
  `sid` int NOT NULL COMMENT '学号',
  `sname` varchar(100) DEFAULT NULL COMMENT '学生姓名',
  `gender` char(1) DEFAULT NULL COMMENT '学生性别',
  `class_id` int DEFAULT NULL COMMENT '班号',
  PRIMARY KEY (`sid`) USING BTREE
) COMMENT='学生表';

INSERT INTO student (sid, sname, gender, class_id) VALUES(1, '张三', '女', 1);
INSERT INTO student (sid, sname, gender, class_id) VALUES(2, '李四', '女', 1);
INSERT INTO student (sid, sname, gender, class_id) VALUES(3, '王五', '男', 2);
INSERT INTO student (sid, sname, gender, class_id) VALUES(4, '张三', '男', 3);

1.2.导入sql脚本

我们执行如下命令将SQL脚本将数据导入到我们的MySQL数据库中。

mysql -uroot -p123456  < test.sql

出现了如下的错误。

在这里插入图片描述

二.排查问题

我们通过上网查阅资料了解到报错的原因是MySQL会截断过长的输入,这里需要把sql-mode设置宽松一点。

三.解决问题

我们在MySQL窗口中输入以下代码即可,但是这是一次性的,每次重启设置都会回到以前的样子。

SET @@global.sql_mode= '';

四.测试

我们输入完上述命令后,在此执行SQL脚本导入命令,发现没有再报该错误。

在这里插入图片描述

并且我们在被导入的数据库中查询SQL脚本导入的数据是正确的。

D:\test>mysql -uroot -p123456

mysql> use school;
Database changed
mysql> select * from student;
+-----+-------+--------+----------+
| sid | sname | gender | class_id |
+-----+-------+--------+----------+
|   1 | 张三  ||        1 |
|   2 | 李四  ||        1 |
|   3 | 王五  ||        2 |
|   4 | 张三  ||        3 |
+-----+-------+--------+----------+
4 rows in set (0.00 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值