导入文件时出错“1366不正确的整数值:'1'”

时间:2015-07-21 18:28:42

标签: mysql powershell inline-editing

我正在尝试内联上传存储在UTF-8文本文件中的数据,我有两个问题。首先,此表上当前没有设置主键,并且此时未将其设置为自动递增或强制为空;加载完所有数据后,第一列将成为预期的主键,此时将添加外键。

我收到以下错误:

  

受影响的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”的异常:“在命令执行期间遇到致命错误。”

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

1 个答案:

答案 0 :(得分:7)

  

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

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

  • 错误显然是荒谬的(似乎说“1”,这是一个整数,是一个不正确的整数值),
  • 它出现在第一行的第一列只有

如果这两个条件成立,那么罪魁祸首就是一个隐藏的三字节序列,它在您尝试加载的SQL文件的开头处显示(它被称为 UTF8字节顺序标记)。

在某些情况下,序列会在错误消息中转义并显示,例如in this bug report。在其他情况下,它将作为值的一部分发送给用户:

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

但是终端“吃掉”BOM,你看到的是(现在荒谬的)错误

Incorrect integer value: '1' ...

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