Я получаю эту ошибку изредка. Я прочитал некоторые решения в stackoverflow, но они были о rails 2 или mysql. Любая помощь будет оценена.
ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
Я получаю эту ошибку изредка. Я прочитал некоторые решения в stackoverflow, но они были о rails 2 или mysql. Любая помощь будет оценена.
ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
Существует множество причин ошибки. Ниже приведены возможные причины. Возможно, ваш размер пакета слишком мал.
Я получил эту ошибку, пытаясь импортировать большой файл через 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, но это решило мою проблему.
У меня такая же проблема возникает, когда я запускаю команду rake db: reset в моей среде разработки. Но я никогда не вижу этого сообщения об ошибке при запуске "rake db: migrate: reset & rake db: seed".
Хотя это очень странно, но это может вызвать некоторые проблески в этом вопросе. Я рад, если мой пост каким-то образом приведет к решению.
Возможно, сервер, на котором вы размещены, перегружен, и в некоторых случаях сервер MySQL не может выполнить запрос. Спросите своего хостинг-провайдера о инструментах мониторинга производительности или сообщите ему об этой проблеме напрямую. Это сообщение об ошибке должно быть достаточно, чтобы дать вам ответ.