我安装了mysql服务器,它也包含数据。我试图从Ruby代码连接到MySQL。为此,我使用gem install mysql
安装了mysql gem。我的程序中的连接部分在下面给出当连接到mysql显示套接字错误
require 'rubygems'
require 'mysql'
require 'csv'
$user_name = "root"
$pas_wrd = "password"
def mysql_connect(db_name)
begin
db = Mysql.real_connect("localhost", "#{$user_name}", "#{$pas_wrd}", "#{db_name}")
return db
rescue Mysql::Error => e
puts "Error code: #{e.errno}"
puts "Error message: #{e.error}"
puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
end
end
它是前一天写的,完成了工作。但是,当我尝试使用相同的代码它显示了一个MySQL的宝石错误,像'初始化'没有找到。通过搜索,我找到了像重新安装宝石的解决方案。重新安装我用户命令rvmsudo gem install mysql
。上述问题解决了。但它显示了另一个错误,如
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
我尝试使用mysql -u root -p
手动它也呈现出同样的错误。
我的mysql my.cnf
内容如下。
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
tmpdir = /home/presoft/Documents
skip-external-locking
mysql未在我的系统中运行。
ps aux | grep mysql
presoft 3823 0.0 0.0 4368 816 pts/0 S+ 10:41 0:00 grep --color=auto mysql
我试着开始使用sudo /etc/init.d/mysql start
这得到
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql start
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mysql
start: Job failed to start
结果任何一个可以帮助我找到一个解决方案,因为含有大量的宝贵数据的数据库使用。
谢谢
问候。
显示下面给出的输出** start:拒绝的发送消息,1个匹配的规则; type =“method_call”,sender =“:1.76”(uid = 1000 pid = 3962 comm =“start mysql”)interface =“com.ubuntu.Upstart0_6.Job”member =“Start”error name =“(unset)” requested_reply =“0”destination =“com.ubuntu。upstart“(uid = 0 pid = 1 comm =”/ sbin/init“)** – apr 2013-02-14 05:39:44
尝试用sudo服务mysql重启 – 2013-02-14 05:42:50
start:作业启动失败 – apr 2013-02-14 05:49:34