Estou desenvolvendo um aplicativo laravel usando o Ubuntu como sistema operacional e meu banco de dados está em um servidor remoto do Azure. Depois de uma longa pesquisa eu estou prestes a desistir. Freetds instalados, php5-sybase etc etc.
aqui está o meu arquivo de conexão: (o padrão é definido como sqlsrv)
....
"sqlsrv" => array(
"driver" => "sqlsrv",
"host" => "myhostname:myport",
"database" => "mydatabasename",
"username" => "myusername",
"password" => "mypassword"
),
....
e o erro que estou recebendo é esse aqui:
PDOException
SQLSTATE[01002] Adaptive Server connection failed (severity 9)
Alguma sugestão? Se vocês precisarem de mais detalhes, por favor, pergunte :)
desde já, obrigado
Respostas:
1 para resposta № 1Eu resolvi meu problema. Estava faltando @domain no meu exemplo de string de consulta:
$pdo = new PDO("dblib:host=xxxx:1433;dbname=yyyy", "username@domain", "password");
0 para resposta № 2
Obtenho solução em A leitura do servidor falhou ao tentar se conectar ao sql-azure a partir do tsql
Editar /etc/freetds/freetds.conf
arquivo e use a versão 8.0 TDS.
Se este arquivo não instalar o FreeTDS com
sudo apt-get install freetds-bin
0 para resposta № 3
Verifique estes:
- separador de porta é "," no windows e ":" no linux / Mac. Desde que você tem 1433, o padrão, é melhor não usá-lo
- definitivamente teste primeiro da linha de comando usando um destes: $ tsql -S sectionNameInFreetdsconf -U user -P pass $ tsql -H nome do host -p port -U user -P pass
localize o freetds.conf no seu disco. É possível que exista em vários lugares e o tsql use um enquanto o PHP usava outro. O melhor é ligá-los em um arquivo comum e testá-los. Note que um lugar comum para esse arquivo é ~ / .freetds.conf ao lado de / etc / ou / usr / local / etc /
deve haver uma seção [global] no seu arquivo freetds.conf. Coloque aí estas linhas:
versão tds = 8.0
tamanho do texto = 20971520
charset do cliente = utf-8