Неопределенная константа класса 'SQLSRV_ENCODING_SYSTEM' - PullRequest
0 голосов
/ 26 ноября 2018

при попытке запустить php artisan migrate на laravel я получаю сообщение об ошибке

In database.php line 79:
Undefined class constant 'SQLSRV_ENCODING_SYSTEM'

У меня установлены драйверы sql и т. Д., Но не знаете, как решить эту проблему

database.phpфайл

'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' => '',
        'options' => [PDO::SQLSRV_ENCODING_SYSTEM => false], // Used for MSSQL encoding
    ],

1 Ответ

0 голосов
/ 26 ноября 2018

Пояснения:

PDO::SQLSRV_ENCODING_SYSTEM - это PDO_SQLSRV Driver Constant, а не имя опции.Вы должны использовать PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_SYSTEM в настройках.Имейте в виду, что эта опция является драйвером Microsoft для PHP для специфического атрибута драйвера для SQL Server (один из PDO::SQLSRV_ATTR_ENCODING и PDO::SQLSRV_ATTR_DIRECT_QUERY).

<?php

...
'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' => '',
    'options' => [PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_SYSTEM]
],

...
?>

Примечания:

Документация: Функции Microsoft SQL Server (PDO_SQLSRV) и Константы (драйверы Microsoft для PHP для SQL Server) .

...