CakePHP: não pode banco de dados MySQL acesso
-
06-07-2019 - |
Pergunta
Eu sou novo para CakePHP e estou apenas correndo através do processo de configuração, mas estou perplexo porque o bolo não pode acessar meu banco de dados MySQL. A página de informação Bolo diz meu diretório tmp é gravável, o FileEngine está sendo usado para armazenamento em cache (não sei o que isso significa), e meu arquivo de configuração de banco de dados está presente, mas que o CakePHP não pode se conectar ao banco de dados.
Aqui estão os meus detalhes de configuração:
- PHP 5,3 (pré-instalado na neve leopardo)
- MySQL 5.1.40 64 bits
- CakePHP 1.2.4.8284
Aqui estão os passos que dei:
- Criado um esquema MySQL chamado cake_blog
- Criado um usuário MySQL chamado cake_blog_user
- Concedido cake_blog_user as permissões apropriadas em cake_blog @ localhost e cake_blog @%
- copiou o arquivo database.php.default para database.php e editados os detalhes de conexão do banco de dados conforme apropriado
Aqui são os dados de configuração relevantes do database.php:
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'cake_blog_user', 'password' => 'cake_blog_password', 'database' => 'cake_blog', 'prefix' => '', );
Estou faltando alguma coisa aqui? Gostaria também de mencionar que, se eu inserir um echo mysql_error();
no direito arquivo /cake/libs/view/pages/home.ctp antes que testa a conexão de banco de dados, o erro exibido é "Nenhum tal lima ou diretório." Eu não tenho nenhuma idéia do que arquivo ou pasta que está falando.
Obrigado!
Solução
Se for tomada, basta editar /etc/php.ini para refletir o seguinte
pdo_mysql.default_socket=/tmp/mysql.sock
e
mysql.default_socket = /tmp/mysql.sock
Outras dicas
O que normalmente mordem-me é que o MySQL pensa em 'localhost' como 'se conectar através de socket unix' e '127.0.0.1' 'conectar através da porta TCP'. Com coisas como XAMPP (pelo menos no Mac) o socket não está lá. Apenas uso 127.0.0.1 em seu lugar.
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '127.0.0.1',
'login' => 'cake_blog_user',
'password' => 'cake_blog_password',
'database' => 'cake_blog',
'prefix' => '',
);
Deve funcionar o tempo todo.
Eu acredito que você também pode fazer o seguinte
<?php
public $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'cake_blog_user',
'password' => 'cake_blog_password',
'database' => 'cake_blog',
'prefix' => '',
'port' => '/tmp/mysql.sock',
)
?>
fazendo isso pode significar que você precisa editar o arquivo database.php quando você vai ao vivo no servidor de produção.
Obrigado a todos por me apontar na direção certa. O arquivo mysql.sock foi movido para /tmp/mysql.sock
vez de sua localização padrão no /var/mysql/mysql.sock
. Editar o arquivo php.ini para refletir esta fixou o problema.
verificar a sua phpinfo e usar o soquete listados. que funcionou para mim.
No Ubuntu, se você instalou ambos os 7.0 e 5.6 versões do PHP esta não vai funcionar.
necessidade de Youll a opção se você tiver ambas as versões:
Olhe primeiro se é versão 7.0:. O comando é php -v
Em seguida faça
sudo a2dismod php7.0
sudo a2enmod php5.6
sudo service apache2 restart