Я получил эту ошибку при попытке импортировать большой файл через seeds.rb
с rake db:seed
, вызвав одно утверждение:
ActiveRecord::Base.connection.execute(IO.read("path/to/file.sql"))
И я продолжал получать ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away...
РЕШЕНИЕ
Я решил это с помощью комбинации двух вещей:
- Добавьте
reconnect: true
к спецификации базы данных в database.yml
Прочитайте файл SQL и выполните инструкцию по отдельности, например:
f = File.new('path/to/file.sql')
while statements = f.gets("") do
ActiveRecord::Base.connection.execute(statements)
end
Мне пришлось изменить, чтобы удалить некоторые комментарии из моего файла SQL - они сделалиActiveRecord по какой-то причине выбрасывает ошибки, но это решило мою проблему.