“MySQL 服务器已经消失”。嗯。
我正在使用 vagrant 和 chef 来设置我的虚拟开发环境。我快到了,但在最后一步, Chef 在尝试执行我的外部 db_setup.sql 文件时失败了。我可以通过 SSH 连接到虚拟服务器来执行相同的脚本,并且安装起来没有任何困难。
这是我的问题代码(在 cookbooks/database/recipies/mysql.rb 文件中):
# Query a database from a sql script on disk
mysql_database 'run script' do
database_name 'my_db'
connection mysql_connection_info
retries 3
sql { ::File.open('/vagrant/db_setup.sql').read }
action :query
end
文件大小为 6.9mb,我在运行 vagrant provision
时收到的错误是:
==> default: [2014-08-24T16:04:53-07:00] ERROR: mysql_database[run script]
(database::mysql line 50) had an error: Mysql::Error: MySQL server has gone away
就其值(value)而言,当我用一个更小、更简单的文件替换 db_setup.sql 文件时,它只创建了几个空表,它执行起来没有困难。
有什么建议吗?提前致谢!
最佳答案
很多很多东西都可以cause this error .根据我的经验,它通常是一个超过 1MB 的 SQL 文件,或者,您的服务器 my.cnf 中的 wait_timeout 设置得非常低(60 秒)需要适当调整。部署 my.cnf 时,请尝试使用 wait_timeout 86400 和“足够”的 max_allowed_packet 来导入该文件。
例如:
[mysqld]
wait_timeout = 86400
max_allowed_packet = 1GB
附言。在实际生产中我不会推荐这么高的参数。
关于mysql chef 数据库配方在大文件上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25477128/