Redmine2.2.0启动报mysql链接错误

在虚拟机CentOS 5装了个dotProject后,又装了个redmine2.2.0,启动时发现前几天正常运行的Redmine启动不了了,控制台输出错误信息以下:php

=> Booting WEBrick
=> Rails 3.2.9 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/local/lib/ruby/gems/1.8/gems/activerecord-3.2.9/lib/active_record/connection_adapters/mysql_adapter.rb:411:in `real_connect': Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql::Error)
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.2.9/lib/active_record/connection_adapters/mysql_adapter.rb:411:in `connect'

看错误信息是没法经过/tmp/mysql.sock链接mysql数据库,记得安dotProject时要安装php5,好像php5也是经过/tmp/mysql.sock链接的数据库,可是dotProject运行正常,经过查phpinfo()函数显示,MYSQL_SOCKET 指向的路径是/tmp/mysql.sock,用命令查看ls -l /tmp 没有发现mysql.sock文件,奇怪呀,没了mysql.sock文件php还能照样跑,ruby就不行了,报错:不能链接mysql。至于缘由还要慢慢查找。mysql


通过验证,解决redmine的这个错误,有两种方法能够采用 sql

  1. 创建软连接:用find / -name mysql.sock 命令找到mysql.sock的绝对路径,例如 /var/lib/mysql/mysql.sock。创建软连接:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock.
  2. 更改redmine的配置文件database.yml,添加socket参数找到redmine所在的目录,进入config文件夹,编辑database.yml文件,加入socket = /var/lib/mysql/mysql.sock 例如
    # MySQL (default setup).
    
    production:
      adapter: mysql
      database: redmine
      host: localhost
      username: root
      password: root
      encoding: utf8
      socket: /var/lib/mysql/mysql.sock
    
    development:
      adapter: mysql
      database: redmine_development
      host: localhost
      username: root
      password: root
      encoding: utf8
      socket: /var/lib/mysql/mysql.sock

相关命令:数据库

查找指定目录下的软连接,如查找/tmp目录下的软连接ruby

find /tmp -type l -ls app

find /tmp -type l -exec ls -l '{}' \;socket

 

注意:l 是字母的l ,不是竖线!函数