日期:2014-05-16  浏览次数:21079 次

MYSQL数据库 导入后,不能插入数据

感谢大家百忙阅读,节约时间,直接主题

问题描述如下:

使用环境:MYSQL 5.0(WIN32)
我有一张已经创建的表EP_dt,创建如下:
create table if not exists ZT
(
id varchar(18) primary key,
name varchar(25),
gender enum('男','女'),
workid bigint unsigned not null unique auto_increment,
partno int unsigned not null,
birthday date default '0000-00-00',
special enum('Y','N') default 'N' not null,
optime datetime
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

插入以下记录几条

(以下s%是参数变量传递进来的,测试语句语法无误。)
insert into ZT (id,name,gender,workid,partno,birthday,special,Lbin,Rbin ,optime) values('%s','%s','%s',  

workid, '%d', '%s',special,'%s','%s',optime) ;
insert into ZT (id,name,gender,workid,partno,birthday,special,Lbin,Rbin ,optime) values('%s','%s','%s',  

workid, '%d', '%s',special,'%s','%s',optime) ;
insert into ZT (id,name,gender,workid,partno,birthday,special,Lbin,Rbin ,optime) values('%s','%s','%s',  

workid, '%d', '%s',special,'%s','%s',optime) ;

导出所有数据(三条记录),命名为ZT.txt,
我在另一个机器上导入现有数据
load data infile'C://ZT.txt,' into table ZT;

提示成功导入三条记录。

此时,我再添加一条记录
(以下s%是参数变量传递进来的,测试语句语法无误。)
insert into ZT (id,name,gender,workid,partno,birthday,special,Lbin,Rbin ,optime) values('%s','%s','%s',  

workid, '%d', '%s',special,'%s','%s',optime) ;
却出现以下错误提示,不能导入,还请高手指导下,先谢谢了。
错误提示信息:
ERROR 1265 (01000): Data truncated for column 'gender' at row 1


------解决方案--------------------
gender 字段什么类型。长度多少。插入的值是什么?
------解决方案--------------------
gender enum('男','女'),

只能插入男或者女 不能插入别的

------解决方案--------------------
mysql> create table test6(a enum('a','b'));
Query OK, 0 rows affected (0.30 sec)

mysql> insert into test6 values('c');
ERROR 1265 (01000): Data truncated for column 'a' at row 1
mysql> insert into test6 values('a');
Query OK, 1 row affected (0.00 sec)
------解决方案--------------------
两个表创建语句是一样的么?照说默认enmu字段的如果插入非存在的预设值是为null,不会出现错误提示。