К сожалению, мне нужно заставить laravel общаться с сервером sql .. Обычно я использую mysql .. и разработал быструю ненависть к серверу sql ..
Я запускаю xampp на localhost для разработки. Я могу подключиться и запросить к локальному серверу sql нормально с Navicat и с SQL Server Studio Studio.
sqlsrv_connect отлично работает в php, и я могу выполнять запросы вручную без проблем. mssql_connect прекрасно работает в php, и я могу запускать запросы без проблем.
, но laravel не удается.
в env:
DB_CONNECTION=sqlsrv
DB_HOST=localhost
DB_DATABASE=handheld2
DB_USERNAME=handheld
DB_PASSWORD=thepasswordhere
DB_PORT=1433
и в конфигурации базы данных laravel:
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL', 'localhost'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'handheld2'),
'username' => env('DB_USERNAME', ''),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
]
Мне не ясно, для чего нужен URL? чем это отличается от db_host?
я получаю
Подсветка \ База данных \ QueryException SQLSTATE [08001]: [Microsoft] [Драйвер ODBC 17 для SQL Server] Поставщик TCP: не может быть установлено соединениепотому что целевая машина активно отказалась от него.
и php_sqlsrv_72_ts_x64.dll и php_pdo_sqlsrc_72_x64.dll включены в php
я пропустил что-то простое и очевидное?
edit: обратите внимание, чтоэтот код работает
$connectionInfo = array(
"Database"=>"handheld2",
"UID" => "handheld",
"PWD" => "thepasswordhere",
);
$conn = sqlsrv_connect("localhost", $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$stmt = sqlsrv_query($conn, 'SELECT top 1 * from users where users.id = 1');
if($stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while( $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC) ) {
print_r($row);
}
и распечатывает записи из базы данных .. так почему он работает здесь, но не работает как laravel ???