导入文件时出现错误“1366 不正确的整数值:'1'”
Getting error "1366 Incorrect integer value: '1'" when importing file
我正在尝试内联上传存储在 UTF-8 文本文件中的数据,但我遇到了两个问题。首先,这个table目前没有设置主键,此时也没有设置自增或者强制为null;加载所有数据后,第一列将是预期的主键,届时将添加外键。
我收到以下错误:
25 row(s) affected, 1 warning(s): 1366 Incorrect integer value: '1' for column 'idtable_file' at row 1 Records: 25 Deleted: 0 Skipped: 0 Warnings: 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')
关于这个 table:
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'
它炸毁了:
Exception calling "ExecuteNonQuery" with "0" argument(s): "Fatal error encountered during command execution."
如果我将调整添加到日期字段。
25 row(s) affected, 1 warning(s): 1366 Incorrect integer value: '1' for column 'idtable_file' at row 1 Records: 25 Deleted: 0 Skipped: 0 Warnings: 1
我也遇到过这个错误。需要注意的是
- 这个错误显然是荒谬的(好像说“1”是一个整数,是一个不正确的整数值),
- 它发生在第一行的第一列并且只有那里。
如果这两个条件成立,那么罪魁祸首很可能是一个隐藏的三字节序列,它位于您要加载的 SQL 文件的开头(它称为 UTF8 字节顺序标记).
在某些情况下,序列在错误消息中被转义并可识别地显示,例如 in this bug report。在其他情况下,它作为值的一部分发送给用户:
Incorrect integer value: '###1' ...
但是终端 "eats" BOM 和你看到的是(现在荒谬的)错误
Incorrect integer value: '1' ...
要解决这个问题,您需要在一些能够去除字节顺序标记的编辑器(例如Notepad++)中打开要导入的文件。
我正在尝试内联上传存储在 UTF-8 文本文件中的数据,但我遇到了两个问题。首先,这个table目前没有设置主键,此时也没有设置自增或者强制为null;加载所有数据后,第一列将是预期的主键,届时将添加外键。
我收到以下错误:
25 row(s) affected, 1 warning(s): 1366 Incorrect integer value: '1' for column 'idtable_file' at row 1 Records: 25 Deleted: 0 Skipped: 0 Warnings: 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')
关于这个 table:
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'
它炸毁了:
Exception calling "ExecuteNonQuery" with "0" argument(s): "Fatal error encountered during command execution."
如果我将调整添加到日期字段。
25 row(s) affected, 1 warning(s): 1366 Incorrect integer value: '1' for column 'idtable_file' at row 1 Records: 25 Deleted: 0 Skipped: 0 Warnings: 1
我也遇到过这个错误。需要注意的是
- 这个错误显然是荒谬的(好像说“1”是一个整数,是一个不正确的整数值),
- 它发生在第一行的第一列并且只有那里。
如果这两个条件成立,那么罪魁祸首很可能是一个隐藏的三字节序列,它位于您要加载的 SQL 文件的开头(它称为 UTF8 字节顺序标记).
在某些情况下,序列在错误消息中被转义并可识别地显示,例如 in this bug report。在其他情况下,它作为值的一部分发送给用户:
Incorrect integer value: '###1' ...
但是终端 "eats" BOM 和你看到的是(现在荒谬的)错误
Incorrect integer value: '1' ...
要解决这个问题,您需要在一些能够去除字节顺序标记的编辑器(例如Notepad++)中打开要导入的文件。