一尘不染

导入文件时出现错误“ 1366错误的整数值:'1'”

mysql

我试图内联上传存储在UTF-8文本文件中的数据,但有两个问题。首先,该表上目前没有设置主键,并且此时未将其设置为自动增量或被强制为null。加载所有数据后,第一列将是预期的主键,并且外键将在该点添加。

我收到以下错误:

受影响的25行,1警告:1366错误的整数值:第1行的’idtable_file’列的值为‘1’记录:25已删除:0跳过:0警告:1

尝试运行此命令时:

LOAD DATA LOCAL INFILE '/path' INTO TABLE sandr.table_file 
columns terminated by ','   
LINES terminated by '\n'
(idtable_file, owner_id, folder_id, @modified_date, @created_date, size, filename)
SET modified_date = STR_TO_DATE(@modified_date,'%d/%m/%Y %T'),
    created_date = STR_TO_DATE(@created_date,'%d/%m/%Y %T')

在此表上:

CREATE TABLE `table_file` (
  `idtable_file` int(11) DEFAULT NULL,
  `owner_id` int(11) DEFAULT NULL,
  `folder_id` int(11) DEFAULT NULL,
  `modified_date` datetime DEFAULT NULL,
  `created_date` datetime DEFAULT NULL,
  `size` int(11) DEFAULT NULL,
  `filename` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我做错了事,但我刚开始使用MySQL,所以我在暗中刺了一下,对此有什么想法吗?此外,尽管上述SQL查询在PowerShell中的运行情况如下:

LOAD DATA LOCAL INFILE '/path' INTO TABLE sandr.table_file 
columns terminated by ','   
LINES terminated by '\n'

它轰炸了:

“使用” 0“参数调用” ExecuteNonQuery“的异常:”命令执行期间遇到致命错误。“

如果我将调整添加到日期字段。


阅读 472

收藏
2020-05-17

共1个答案

一尘不染

受影响的25行,1警告:1366错误的整数值:第1行的’idtable_file’列的值为‘1’记录:25已删除:0跳过:0警告:1

我也遇到了这个错误。需要注意的是

  • 该错误显然是荒谬的 (似乎说“ 1”,它是一个整数,是不正确的整数值),并且
  • 它发生在 第一行的第一列上仅在那里

如果这两个条件都成立,那么罪魁祸首很可能是一个隐藏的三字节序列,该序列在您要加载的SQL文件的开头处有斑点(称为 UTF8字节顺序标记 )。

在某些情况下,该序列会在错误消息中转义,并可以识别地显示出来,例如在此错误报告中。在其他情况下,它作为值的一部分发送给用户:

Incorrect integer value: '###1'  ...

但是终端“吃掉”了物料清单,您看到的是(现在很荒谬)错误

Incorrect integer value: '1' ...

为了解决该问题,您需要在能够删除字节顺序标记的编辑器中打开要导入的文件(例如Notepad ++)。

2020-05-17