更新:我已经停止其运行,并造成一些混乱的旧的MySQL进程。现在,我想我只有较新的(5.1.40)版本运行。但是,它指向错误的数据文件。它指向一个默认安装的数据文件,我想它指向/var/mysql现有的数据文件。这里的/etc/my.cnf中

的一部分
# The following options will be passed to all MySQL clients
[client]
#password   = your_password
port        = 3306
socket      = /var/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port        = 3306
socket      = /var/mysql/mysql.sock

这是指向旧的mysql.sock。我似乎无法在较新的目录树中找到安装MySQL?!?除非它的地方遮掩。

谁能帮助?基本上我安装了一个新的MySQL,现在需要得到这个新版本的推出与我的现有数据。整理一下这个事情的mysql.sock ....


我最近更新MySQL的Mac OS X服务器上时遇到的时间连接到它从一个Rails应用程序地狱。或一致通过命令行对这一问题。

我敢肯定,这是对我而言明显的错误,但我只有适度的命令行经验,所以希望有人能帮助...

也与我的Rails应用程序不再可以连接。未能通过/tmp/mysql.sock连接,但我不知道为什么它看起来有,因为在/ tmp中没有的mysql.sock,我不知道它应该是什么/ ....

修改将来自mysql_config --sockets

的结果
$ mysql_config --sockets
Usage: /usr/local/mysql/bin/mysql_config [OPTIONS]
Options:
        --cflags         [-I/usr/local/mysql/include  -g -Os -arch ppc -fno-common   -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL]
        --include        [-I/usr/local/mysql/include]
        --libs           [-arch ppc  -L/usr/local/mysql/lib -lmysqlclient -lz -lm     -lmygcc]
        --libs_r         [-arch ppc  -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm     -lmygcc]
        --plugindir      [/usr/local/mysql/lib/plugin]
        --socket         [/tmp/mysql.sock]
        --port           [0]
        --version        [5.1.40]
        --libmysqld-libs [-arch ppc  -L/usr/local/mysql/lib -lmysqld -ldl  -lz -lm       -lmygcc]

<强> EDIT2 其中mysql_config

$ which mysql_config
/usr/local/mysql/bin/mysql_config
有帮助吗?

解决方案

您要使用不同的插座的服务器和客户端。你的Rails试图连接到/tmp/mysql.sock,由MySQL是在/var/mysql/mysql.sock听。

通常的MySQL配置存储在/etc/my.cnf中,但以ps你的输出I看到插座路径被给定为一个参数。所以真的取决于你的系统的具体细节。

总之,在看的/etc/my.cnf和你的database.yml,并在这两个文件中相同的路径确保的mysql.sock出现。

其他提示

不知道这是否将彻底解决你的问题(您可能需要通过cababunga的建议,以解决插座路径),但尽量127.0.0.1绕过套接字连接,并建立一个TCP一个。

红宝石MySQL的模块中的功能real_connect其实需要一串参数:

real_connect(host,user,password,db,port,socket,flags)

您需要更改一个是“插座”参数。在我的Python在Mac OS X应用程序,我要组插座参数为/var/mysql/mysql.sock

于是通知,这不是你需要改变主机,它的实际插槽。是否有一个socket:参数,你可以在你的配置使用?

因此,这里是你可以做什么......

运行于OS X终端的命令行命令mysql_config --socket,它应该回到你的“窝”,你需要使用(可能/var/mysql/mysql.sock)的值。

然后在您的database.yml文件,确保您添加一行:

socket: /var/mysql/mysql.sock

我主要是通过Python在OS X上运行到这一点,并以类似的方式固定,但我要去猜测,红宝石会给你同样的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top