Mysql 获取错误“;1366整数值不正确:';1'&引用;导入文件时

Mysql 获取错误“;1366整数值不正确:';1'&引用;导入文件时,mysql,powershell,inline-editing,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 term

我正在尝试内联上传存储在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”参数调用“ExecuteOnQuery”时出现异常:“在命令执行过程中遇到致命错误。”

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

25行受影响,1条警告:1366整数值不正确:第1行记录“idtable_file”列的“1”:25条已删除:0条已跳过:0条警告:1

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

  • 错误显然是荒谬的(似乎是说“1”是一个整数,是一个不正确的整数值),并且
  • 它发生在第一行的第一列上,并且只发生在那里
如果这两个条件成立,那么罪魁祸首很可能是一个隐藏的三字节序列,它位于您试图加载的SQL文件的开头(它被称为UTF8字节顺序标记)

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

Incorrect integer value: '###1'  ...
但是终端“吃掉”BOM表,您看到的是(现在是荒谬的)错误


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

我只需要找出是什么原因导致powershell引发异常,这是我花费数周时间完成的工作。你能建议我单独提一个问题吗?我有一个查询和非查询功能,我回到办公室后,大约30分钟后会粘贴到非查询功能中。这可能是明显的或语法问题……我运行以下函数:函数Exec NonQuery([string]$query){$Connection.open()$command=$Connection.CreateCommand()$command.CommandText=$query$RowsInserted=$command.ExecuteNonQuery()$command.Dispose()$Connection.Close()$if($RowsInserted){return$rowserted}else{return$query}然后只需:$SqlQuery=@“将数据本地填充$path加载到表sandr.TABLE_文件列中,以“,”结尾的行以“\r\n”@}执行非查询$SqlQuery
Incorrect integer value: '1' ...