Linux上使用Python加载数据时出现时间戳字段错误

Linux上使用Python加载数据时出现时间戳字段错误,python,mysql,Python,Mysql,我们正在生成CSV格式的测试数据,并使用Python连接器将此CSV加载到MySQL中。在我们在数据库中引入时间戳数据类型之前,一切正常 在我们的CSV中,我们有数百万行,有些行,只有一些行抛出异常: mysql.connector.errors.DataError: 1292 (22007): Incorrect datetime value: '2008-03-30 01:12:20' for column 'document_creation_time' at row 17088 在Py

我们正在生成CSV格式的测试数据,并使用Python连接器将此CSV加载到MySQL中。在我们在数据库中引入时间戳数据类型之前,一切正常

在我们的CSV中,我们有数百万行,有些行,只有一些行抛出异常:

mysql.connector.errors.DataError: 1292 (22007): Incorrect datetime value: '2008-03-30 01:12:20' for column 'document_creation_time' at row 17088
在Python脚本中,通过LOAD DATA INFILE语句传入的CSV的日期值为:

30/03/2008 01:12:20

我们在LOAD DATA INFILE语句中用于将数据转换为时间戳的SQL表达式是:

STR_TO_DATE(@backup_time, \'%d/%m/%Y %T\')
有趣的是,如果我们从MySQL工作台(而不是通过Python)使用本地参数执行相同的LOAD DATA INFILE语句,它就会工作

只有当我们通过Python连接器运行它时,才会出现错误

我们一直试图摆弄角色集,但运气不好。CSV和数据库都应设置为UTF8

我们被卡住了,有没有办法解决这个问题


更新1:当我们加载本地选项值时,如01:12:20变为02:00:00

您可以尝试使用此选项吗?->
STR\u TO\u DATE(@backup\u time,\'%m/%d/%Y%T\')
@SujeetSinha:嗯,这有什么帮助?OP的原始日期字符串显然是
day/month
。告诉他们切换到
月/日
只会杀死其他人records@MarcB我只是想这可能是因为MySQL中的预期日期格式。。不确定它是否解决了问题,因此没有将其作为答案发布..op在其数据库中有一个字符串
dd/mm/yyyy
,并且正在load命令中使用str_to_date动态转换它。这两个日期字符串都没有问题,转换得很好。mysql由于某种原因变得愚蠢。mysql服务器上的全局时区或Python连接的每客户端时区是否设置为中的某个位置?2008年3月30日星期日上午01:12由于夏令时的变更,该时区不存在。这也解释了更改为凌晨2:00的原因,因为这是当天凌晨1:12之后的下一个有效时间。您可以尝试使用此选项吗?->
STR\u TO\u DATE(@backup\u time,\'%m/%d/%Y%T\')
@SujeetSinha:嗯,这有什么帮助?OP的原始日期字符串显然是
day/month
。告诉他们切换到
月/日
只会杀死其他人records@MarcB我只是想这可能是因为MySQL中的预期日期格式。。不确定它是否解决了问题,因此没有将其作为答案发布..op在其数据库中有一个字符串
dd/mm/yyyy
,并且正在load命令中使用str_to_date动态转换它。这两个日期字符串都没有问题,转换得很好。mysql由于某种原因变得愚蠢。mysql服务器上的全局时区或Python连接的每客户端时区是否设置为中的某个位置?2008年3月30日星期日上午01:12由于夏令时的变更,该时区不存在。这也解释了更改为凌晨2:00的原因,因为这是当天凌晨1:12之后的下一个有效时间。