我安装了mysql服务器,它也包含数据。我试图从ruby代码连接到mysql。为此,我使用gem install mysql
安装了mysql gem。我程序中的连接部分在下面给出
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 gem错误,就像找不到'initialize'之类的东西。通过搜索,我找到了一个像重新安装宝石的解决方案。重新安装我用户命令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
任何人都可以帮我找到解决方案,因为db包含大量有价值的数据。
由于
问候。
答案 0 :(得分:0)
使用
service mysql start
这将启动mysql服务。较新的linux机器将mysql视为服务
答案 1 :(得分:0)
我从上面的答案提示中解决了这个问题。问题是我的mysql服务器已损坏。
所以我先运行命令
sudo apt-get purge mysql-common mysql-server
它将删除所有mysql文件和配置而不删除数据。运行后请仔细观察过程并完成任何警告或错误的需要。 我收到了像
这样的警告dpkg: warning: while removing mysql-common, directory '/etc/mysql' not empty so not removed.
所以我删除了文件并重新运行上面的命令。成功执行后。我使用
重新安装了mysqlsudo apt-get install mysql-common mysql-server
然后设置root密码。进入服务器后数据是安全的。