Rails mysql丢失连接

时间:2015-07-28 13:13:07

标签: mysql ruby-on-rails

我的网站有时导致500错误(任何路径)
但是再次刷新后,500错误消失,右页打开。

信息

Rails 4.1.4
MySQL 5.6.25
mysql2 gem 0.3.17
Rails webserver : nginx & unicorn on Ubuntu 12.10
db server : centOS 6.6

500错误消息

ActiveRecord::StatementInvalid (Mysql2::Error: Lost connection to MySQL server during query: BEGIN)

的database.yml

production:
  adapter: mysql2
  encoding: utf8
  pool: 20
  username: xxxx
  password: xxxx
  host: xxxx
  database: xxxx
  wait_timeout: 300 
  reconnect: true

centos 6.6 [mysqld]设置(/etc/my.cnf)

bind-address=0.0.0.0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET names utf8"
character-set-server = utf8
collation-server = utf8_general_ci
skip-name-resolve
wait_timeout=300
interactive_timeout=300

也许我认为mysqld设置存在问题,因为在移动mysql服务器之后会出现此错误。

我之前有过mysql帐号,不是linux服务器。所以我不需要设置mysql配置。只是使用mysql托管。但是现在,我使用了用于mysql的centOS 6.6服务器,所以我安装了mysqld并使用它。

然后出现上述错误。

如何解决这个问题?

添加

  1. 将主机更改为私有IP和域无效。
  2. 下添加mysqld设置后
    general_log=ON
    log_warnings=2
    

    日志文件没有关于连接丢失的日志。

1 个答案:

答案 0 :(得分:0)

这可能是你的wait_timeout设置为300吗? 我不确定你的连接在返回数据库之前有多长时间处于闲置状态,但设置为300时,MySQL会在5分钟内终止任何睡眠连接。

如果不是这样,请运行SHOW VARIABLES; 这将有助于确定问题所在。