Pergunta

Estou tendo problemas para fazer uma conexão secundária MySQL (com um banco de dados externo separado) no meu código. Funciona bem no Php 5.2.9, mas não se conecta no Php 5.3.0. Estou ciente de (pelo menos algumas) das mudanças necessárias para fazer conexões MySQL bem -sucedidas na versão mais recente do PHP e já tiveram sucesso antes, então não sei por que não está funcionando desta vez.

Eu já tenho uma conexão DB aberta a um banco de dados local. Esta função abaixo é usada para fazer uma conexão adicional com um diretório remoto separado. O arquivo de configuração incluído simplesmente contém os detalhes do banco de dados externos (host, usuário, passagem e nome). Eu verifiquei e está sendo incluído corretamente.

function connectDP() {
    global $dpConnection;

    include("secondary_db_config.php);
    $dpConnection = mysql_connect($dp_dbHost, $dp_dbUser, $dp_dbPass, true) or DIE("ERROR: Unable to connect to Deployment Platform");
    mysql_select_db($dp_dbName, $dpConnection) or DIE("ERROR 006: Unable to select Deployment Platform Database");
}

Eu então tento fazer essa nova conexão simplesmente chamando essa função externamente:

connectDP();

Mas ao carregar a página (em 5.3.0), recebo a mensagem:

ERROR: Unable to connect to Deployment Platform

Estou usando o opcional new_link bandeira booleana como o quarto argumento no mysql_connect() função e ainda não está funcionando.

Eu tenho destruído meu cérebro esta manhã tentando descobrir por que essa conexão não funciona (enquanto eu fiz algo muito semelhante a um segundo banco de dados separado que funciona). Qualquer ajuda seria apreciada.

Obrigado!

Rico

Foi útil?

Solução

Como o PHP 5.3 usa seu próprio driver MySQL (MySQLND) por padrão, em vez do libmysqlClient. Dependendo da plataforma, ele não pode ler os padrões do arquivo de configuração do MySQL (por exemplo. /etc/mysql/my.cnf). Você precisa editar php.ini e especifique os padrões para a (s) extensão (s) que você usa (mysql, mysqli, PDO). Por exemplo, no Debian, você precisa especificar o caminho para o soquete (por exemplo. /var/run/mysqld/mysqld.sock) você mesmo no arquivo ini. Basta passar pelo arquivo ini e especificar opções ausentes e deve funcionar.

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