Pergunta

Atualizar: Eu parei o processo MySQL mais antigo que estava funcionando e causando alguma confusão. Agora acho que tenho apenas a versão mais recente (5.1.40) em execução. Mas está apontando para o arquivo de dados errado. Está apontando para um arquivo de dados de instalação padrão e eu gostaria que aponte para o arquivo de dados existente em /var/mysql. Aqui está uma parte de /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

Isso está apontando para o MySql.sock mais antigo. Não consigo encontrar na árvore do diretório da instalação mais recente do MySQL?!? A menos que esteja em algum lugar obscuro.

Alguém ajuda? Basicamente, instalei um MySQL mais recente e agora preciso obter esta nova versão para ser lançada com meus dados existentes. E resolva essa coisa do MySql.sock ....


Atualizei recentemente o MySQL no Mac OS X Server e estou tendo um tempo que se conecta a ele a partir de um aplicativo Rails. ou consistentemente da linha de comando para esse assunto.

Tenho certeza de que este é um erro óbvio da minha parte, mas só tenho experiência moderada na linha de comando, esperando que alguém possa ajudar ...

Também está relacionado, meu aplicativo Rails não pode mais conectar. Não me conectando via /tmp/mysql.sock Mas não sei por que está olhando lá porque não há mysql.sock in /tmp e eu não sei o que /onde deveria estar ....

Editar: Adicionando resultados de 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 que mysql_config

$ which mysql_config
/usr/local/mysql/bin/mysql_config
Foi útil?

Solução

Você está tentando usar soquetes diferentes para o servidor e o cliente. Seu Rails está tentando se conectar a /tmp/mysql.sock, por mysql está ouvindo /var/mysql/mysql.sock.

Normalmente a configuração do MySQL é armazenada em /etc/my.cnf, mas em seu ps Sua saída que vejo o caminho do soquete é dada como um parâmetro. Então, realmente depende das especificidades do seu sistema.

De qualquer forma, veja em /etc/my.cnf e seu database.yml e verifique se o mysql.sock aparece no mesmo caminho nos dois arquivos.

Outras dicas

Não tenho certeza se isso resolverá completamente seu problema (pode ser necessário consertar o caminho do soquete, conforme sugerido pela Cababunga), mas tente 127.0.0.1 Para ignorar a conexão do soquete e estabelecer um TCP um.

A função real_connect No módulo Ruby Mysql, na verdade, leva vários parâmetros:

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

O que você precisa alterar é o parâmetro "soquete". Nos meus aplicativos Python no Mac OS X, tenho que definir esse parâmetro de soquete para ser /var/mysql/mysql.sock.

Portanto, observe, não é o host que você precisa mudar, é o soquete real. Tem alguma socket: Parâmetro que você pode usar em sua configuração?

Então aqui está o que você pode fazer ...

Execute o comando mysql_config --socket em sua linha de comando em um terminal no OS X e deve devolver o valor do "soquete" que você precisa usar (provavelmente /var/mysql/mysql.sock).

Em seguida, no seu arquivo database.yml, certifique -se de adicionar a linha:

socket: /var/mysql/mysql.sock

Eu encontrei principalmente isso via Python no OS X e o corrigi de maneira semelhante, mas acho que Ruby lhe dará o mesmo problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top