Нет запросов, работающих с таблицей после загрузки ФАЙЛА ДАННЫХ

#mysql #innodb #load-data-infile

#mysql #innodb #load-data-infile

Вопрос:

Я попытался загрузить большой CSV-файл (14,8 ГБ) в базу данных MySQL, используя движок InnoDB и команду LOAD DATA INFILE. Запрос был завершен, поскольку статус 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. Могу ли я каким-либо образом проверить, так ли это? Единственная команда, которую я знаю, это ПОКАЗАТЬ СОСТОЯНИЕ ТАБЛИЦЫ, и это результат, который я получаю:

 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

Комментарии:

1. Это звучит как ошибка в Workbench. Это 32-разрядная версия? Начните сначала, но используйте инструмент командной строки mysql .

2. @RickJames Нет, он 64-разрядный. В итоге я обрезал таблицу и использовал LOAD DATA INFILE из соединителя Python, и проблема теперь решена, так что вы можете быть правы, что это была ошибка в Workbench. Спасибо!