我建了个表,定义如下:
create table t1( c int);
然后件了个.txt文件,在其中输入数据 4000\n,保存后,在mysql窗口输入load data infile 'e:/test.txt' into table t1;
系统提示OK,查询时也的确有插入了数据4000.
然而,后来我将c的数据类型int更改为float,然后在窗口中用insert 插入无论整数还是小数都可以,可是在test.txt中将数据改为整数或小数后,然后在窗口输入load data infile 'e:/test.txt' into talbe t1;可是系统都提示出现同样的问题,错误如下:error 1265(01000):Data truncated for column 'c' at row 1
我很奇怪为什么改为float 类型后用insert 能插入数据,而用load data infile却不能,希望高手们能给我指点下,小弟不胜感激!
create table t1( c int);
然后件了个.txt文件,在其中输入数据 4000\n,保存后,在mysql窗口输入load data infile 'e:/test.txt' into table t1;
系统提示OK,查询时也的确有插入了数据4000.
然而,后来我将c的数据类型int更改为float,然后在窗口中用insert 插入无论整数还是小数都可以,可是在test.txt中将数据改为整数或小数后,然后在窗口输入load data infile 'e:/test.txt' into talbe t1;可是系统都提示出现同样的问题,错误如下:error 1265(01000):Data truncated for column 'c' at row 1
我很奇怪为什么改为float 类型后用insert 能插入数据,而用load data infile却不能,希望高手们能给我指点下,小弟不胜感激!
e:/test.txt文件的内容是:
4000\n
3000\n
2000\n
1000\n
mysql>create table t1
->(c int);
Query OK.
mysql>load data infile 'e:/test.txt' into table t1;
Query OK.
查询表后显示数据输入成功。
现如下做更改:
mysql>delete from t1;
Query OK
mysql>alter table t1 modify c float;
Query OK.
mysql>select * from t1;
Empty set (0.05 sec)
mysql>load data infile 'e:/test.txt' into table t1;
ERROR 1265 (01000):Data truncated for column 'c' at row1
至此,文件中的数据没变动过。
后来将文件中的数据(整数来的)全更改为小数,再提示以下错误:
mysql>load data infile 'e:/test.txt' into table t1;
ERROR 1265 (01000):Data truncated for column 'c' at row1大侠们帮帮忙!
不出意外的话讲话显示:STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
这时你输入:set @@GLOBAL.sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';修改里面的设置再重启一下MySql,重新载入就可以。
注:我已试验过,结果是:
4000.1
3000.2
2000.5
1000.4
Query OK, 4 rows affected (0.19 sec)
Records: 4 Duplicates: 0 Warnings: 0mysql> load data infile 'F:/Cherish/学习总结/MySQL/test.txt' into table t1;
Query OK, 4 rows affected (0.09 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
4个步骤解决你的问题:1.修改SQL_mode的设置,取消STRICT_TRANS_TABLESmysql> set @@GLOBAL.sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)
2.将test.txt文件修改为:(请注意第一行,不要用任何数据,一个换行即可)4000\n
3000\n
2000\n
1000\n3.修改表的enginemysql> alter table t1 engine=myisam;
Query OK, 0 rows affected (0.13 sec)
Records: 0 Duplicates: 0 Warnings: 0
4.再次导入数据。mysql> alter table t1 engine=myisam;
Query OK, 0 rows affected (0.13 sec)
Records: 0 Duplicates: 0 Warnings: 0
5.还原表enginemysql> alter table t1 engine=innodb;
Query OK, 0 rows affected (0.13 sec)
Records: 0 Duplicates: 0 Warnings: 0
float类型不是可变的么?不过又搜索了下,好像很多人支持用decimal类型!谢谢大侠!