Подключите Laravel Framework 5.6.27 и PHP 7.1.9 к SQL Server 2014

Я пишу приложение, используя Laravel 5.6.27, PHP 7.1.9 и SQL Server 2014, и я попробовал несколько решений, найденных в Интернете (большинство из них ниже в используемой мной версии), в том числе с этого сайта.

В основном вот что я сделал,

Настроил .env на это:

DB_CONNECTION=sqlsrv
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydatabasename
DB_USERNAME=sa
DB_PASSWORD=mypassword

database.php к этому:

строка 16:

'default' => env('DB_CONNECTION', 'sqlsrv'),

строка 70:

    'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],

Я также попытался заменить эти записи в строке 70 фактическими учетными данными, но безуспешно.

Я также пробовал это расширение как из SQLSRV52.EXE и SQLSRV43.EXE, так и из неофициальных выпусков.

extension=php_sqlsrv_71_ts_x64.dll
extension=php_pdo_sqlsrv_71_ts_x64.dll
extension=php_pdo_sqlsrv_71_ts.dll
extension=php_sqlsrv_71_ts.dll
extension=php_pdo_sqlsrv_71_ts_x86.dll
extension=php_sqlsrv_71_nts_x86.dll
extension=php_pdo_sqlsrv_7_ts_x86.dll
extension=php_pdo_sqlsrv_71_ts_x64.dll

Вот ошибка, с которой я столкнулся при запуске php artisan migrate:

Illuminate\Database\QueryException  : could not find driver (SQL: select * from sysobjects where type = 'U' and name = migrations)

и когда я бегу DB::connection()->getPdo();

$ php artisan tinker
Psy Shell v0.9.6 (PHP 7.1.9 — cli) by Justin Hileman
>>> DB::connection()->getPdo();
PDOException with message 'could not find driver'
>>>

Кроме того, я не уверен, если с этой ошибкой на странице входа "SQLSTATE[HY000]: [Microsoft][ODBC Driver 17 for SQL Server]Protocol error in TDS stream (SQL: select top 1 * from [users] where [email] = [email protected])" означает, что он смог найти драйвер через веб-логин и просто php artisan, который может найти драйвер.

Я надеюсь, что кто-то может просветить меня об этом.

Большое спасибо!

1

Решение

Помимо того, что сказал Стефан, также используйте представление, где вы просто помещаете phpinfo ().

Это просто для проверки, если вы установили расширение pdo для сервера SQL.

Это должно выглядеть так:

введите описание изображения здесь

Если нет, вы должны установить это расширение.

А также обратите внимание на другие параметры в файле .env, такие как DB_DATABASE, DB_USERNAME и т. Д., Поскольку они имеют приоритет над значениями, установленными в database.php

1

Другие решения

В .env файл, у вас есть порт 3306 (MySQL). Должно быть 1433 для Sql.

0

По вопросам рекламы [email protected]