MySQL中的加载数据失败

MySQL中的加载数据失败,mysql,sql,mysql-workbench,mysql-error-1064,Mysql,Sql,Mysql Workbench,Mysql Error 1064,我正在尝试将数据从csv文件加载到MySQL中的表中。虽然一切看起来都很好,但由于某种原因,它对我不起作用,而我的团队成员能够成功地加载它。我们都有相同的表定义和数据 我的表定义如下所示 CREATE TABLE SIGNS ( ROW_ID MEDIUMINT UNSIGNED NOT NULL, SUBJECT_ID MEDIUMINT UNSIGNED NOT NULL, Test_ID MEDIUMINT UNSIGNED NOT NULL, Name_I

我正在尝试将数据从csv文件加载到MySQL中的表中。虽然一切看起来都很好,但由于某种原因,它对我不起作用,而我的团队成员能够成功地加载它。我们都有相同的表定义和数据

我的表定义如下所示

   CREATE TABLE SIGNS ( 
   ROW_ID MEDIUMINT UNSIGNED NOT NULL,
   SUBJECT_ID MEDIUMINT UNSIGNED NOT NULL,
   Test_ID MEDIUMINT UNSIGNED NOT NULL,
   Name_ID TINYINT UNSIGNED NOT NULL,
   date_ID TINYINT UNSIGNED NOT NULL,
   race_NO MEDIUMINT UNSIGNED NOT NULL,
   MO_TIME DATETIME NOT NULL,
   ITEMID VARCHAR(255) NOT NULL,
   VALUE SMALLINT UNSIGNED NOT NULL,
  UNIQUE KEY SIGNS_ROW_ID (ROW_ID)
  )
  CHARACTER SET = UTF8;
我有一个csv文件中的数据,当我上传它时,可以很好地处理80个pc的记录。但是大约20个人的记录会抛出下面的错误

有时,我会收到错误消息
第438575行“value”列的值超出范围

有时我会在第11265行的“MO_TIME”列中截短
数据

正如你所看到的,这是非常不一致的。但是数据没有问题,因为它对我的团队成员来说很好。它是否与约束/索引有关

对于其他表,我也遇到了类似的奇怪问题。但是我截断了表并再次加载,它工作得很好


我在这里尝试了同样的方法,但没有任何帮助

您的值列是SMALLINT UNSIGNED。在聊天中,您说它作为0插入到警告值超出范围的行中

看看我做的这个测试:

mysql> create table t ( i smallint unsigned);
Query OK, 0 rows affected (0.04 sec)

mysql> insert into t set i = -150;
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> show warnings;
+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1264 | Out of range value for column 'i' at row 1 |
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from t;
+------+
| i    |
+------+
|    0 |
+------+
如果尝试将负值插入到smallint unsigned列中,则该值超出unsigned支持的范围。它被截断为0,因为无符号数字类型仅支持非负值

如果尝试插入无效值,datetime也会发生类似的情况。例如,一个常见错误是使用MM/DD/YYYY格式的日期,MySQL不支持:

mysql> create table t2 (mo_time datetime);
Query OK, 0 rows affected (0.04 sec)

mysql> insert into t2 set mo_time = '10/31/2019';
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> show warnings;
+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1265 | Data truncated for column 'mo_time' at row 1 |
+---------+------+----------------------------------------------+
这与您收到的错误消息相同

mysql> select * from t2;
+---------------------+
| mo_time             |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+
Aha,过去被视为默认值的无意义日期值。谢天谢地,在MySQL的最新版本中,它是被禁止的


MySQL只支持YYYY-MM-DD格式。实际上,部件之间的标点符号是可选的。有关详细信息,请参阅。

如何加载数据?您是否使用
加载数据填充
语法或其他语法?您是否阅读了有关SMALLINT的大小及其支持的值范围的说明?是的,如果这是一个有效问题,那么我的团队成员也应该面临同样的问题。比较MySQL实例中的
@@sql\u mode
变量的值与团队成员的MySQL实例的值。可能是您的设置为更严格的模式,该模式将超出范围的值视为错误,而his正在默默地截断这些值。@GMB-是。我使用加载数据填充命令。我已经用截图更新了帖子。