LOAD DATA INFILE后在表上无查询

时间:2019-03-14 18:42:44

标签: mysql innodb load-data-infile

我尝试使用InnoDB引擎和LOAD DATA INFILE命令将大型CSV文件(14.8GB)上传到MySQL数据库。由于InnoDB状态显示已插入的总行数,因此查询已完成:

--------------
 ROW OPERATIONS
 --------------
 1 queries inside InnoDB, 0 queries in queue
 1 read views open inside InnoDB
 Process ID=5592, Main thread ID=0000000000001D80 , state=sleeping
 Number of rows inserted 200370545, updated 387, deleted 6, read 12473
 0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
 ----------------------------
 END OF INNODB MONITOR OUTPUT
 ============================

查询完成后,在对表进行任何操作之前,MYSQL Workbench中弹出一个错误(“索引超出范围”),由于该程序无法响应,我强制关闭了该程序。

现在,我在此表上尝试的任何查询都陷入“发送数据”状态,即使是最简单的SELECT * FROM表

4   event_scheduler localhost       Daemon  28941   Waiting on empty queue  
27  root    localhost:62797 truck_database  Sleep   820     
28  root    localhost:62798 truck_database  Query   1339    Sending data    SELECT * FROM gps_data LIMIT 10
29  root    localhost:62800 truck_database  Sleep   130     
30  root    localhost:62801 truck_database  Query   0   starting    show processlist

我之前已经将相同的CSV文件加载到另一台MySQL服务器上,并且在那里可以正常工作。唯一的区别是,这次我尝试一次上传整个文件,而不是将其切成较小的块。

该表似乎在某种程度上已损坏,可能是在强制关闭Workbench之后造成的。有什么办法可以检查这种情况吗?我知道的唯一命令是SHOW TABLE STATUS,这是我得到的结果:

gps_data    InnoDB  10  Dynamic 134694075   141 19028508672 0   0   3145728     2019-03-07 17:21:28         utf8mb4_0900_ai_ci                  

另外,可能有必要知道在加载数据之前将InnoDB_buffer_pool_size修改为5G,而我刚刚将其设置回500M。这是我对my.ini所做的唯一修改

0 个答案:

没有答案