Как использовать соединение SQL Server в Laravel?

У меня есть рабочий проект, сделанный в Laravel 3, который я должен переключиться на MsSQL Server (не мой звонок, хотя, нюх …), и я не понимаю конфигурацию Laravel в этом типе базы данных …

Я изменил значение по умолчанию внутри database.php на этот 'default' => 'sqlsrv' тогда я настроил хост, базу данных, имя пользователя, пароль в массиве sqlsrv но затем я получаю это сообщение об ошибке:

Это расширение требует, чтобы драйвер ODBC собственного клиента Microsoft SQL Server 2012 взаимодействовал с SQL Server“

После некоторого исследования я обнаружил, что нам нужен PDO SQLSRV, который у меня уже есть как версия 5.4, и в моей phpinfo я получаю эту возвращенную pdo_sqlsrv support : enabled поэтому кажется, что все правильно, но в то же время, похоже, запрашивает соединения ODBC SQLSRV, действительно ли мне нужно это использовать?

Я предпочел бы подключиться непосредственно из соединения базы данных Laravel … но даже если мне это нужно, и я создал какое-то соединение ODBC с сервером, как его поместить в мою конфигурацию? Вот то, что у меня есть в моей конфигурации (конечно, my... заменяет мои настоящие детали):

 'sqlsrv' => array( 'driver' => 'sqlsrv', 'host' => 'myServerIP', 'database' => 'myDatabase', 'username' => 'myUsername', 'password' => 'myPassword', 'prefix' => '', ), 

Любая помощь будет принята с благодарностью, единственное, что я нашел рядом с моей проблемой, – это ссылка с форума Laravel : запрос Laravel на SQL Server, но затем он просто останавливается без каких-либо конфигураций.

Это то, что я сделал для подключения моего приложения Laravel к MS SQL Server:

  1. Обновление sudo apt-get

  2. sudo apt-get install php5-sybase

если вы попытаетесь установить php5-mssql, он все равно установит php5-sybase, это «модуль Sybase / MS SQL Server для php5».

это заставит Laravel использовать драйвер dblib вместо sqlsrv.

посмотрите этот файл для справки Illuminate \ Database \ Connectors \ SqlServerConnector.php.

  1. открыть этот файл: /etc/freetds/freetds.conf

в разделе [global] и под tds version = 4.2

add tds version = 8.0 (без полуколона в начале строки)

и добавить клиентскую charset = UTF-8 раз под вышеуказанной строкой (без полуколона в начале строки)

Это позволяет драйверу кодировать все данные в utf-8 и избегать странных символов в данных

файл будет выглядеть так:

 [global]    # TDS protocol version ;    tds version = 4.2    tds version = 8.0    client charset = UTF-8 
  1. создайте файл locales.conf в этом каталоге / etc / freetds и выполните следующие действия внутри него: (это позволяет правильно разобрать даты с SQL Server).

 [default]  date format = %Y-%m-%d %I:%M:%S.%z [en_US]  date format = %b %e %Y %I:%M:%S:%z%p  language = us_english  charset = iso_1 

  1. отредактировать файл php.ini

сначала найдите файл с php -i | grep php.ini

затем откройте файл и выполните поиск mssql.charset (это, вероятно, будет выглядеть как отключено : mssql.charset = "ISO-8859-1" )

сделайте это mssql.charset = "UTF-8" << убедитесь, что вы удалили; полу столбца, чтобы включить его >>

Сохранить и выйти

  1. перезагрузите сервер (nginx или apache или php-fpm)

  2. конечно, вы знаете, что вам нужно установить конфигурацию базы данных для использования sqlsrv по умолчанию 'default' => 'sqlsrv', и добавить свои учетные данные.


ДРУГИЕ МЕТОДЫ:

вы можете использовать драйвер ODBC для подключения

вот хороший пакет https://github.com/ccovey/odbc-driver

Ahh после намного большего исследования, я узнал, что мой драйвер SQL Server Native Client 10.0 устарел и недостаточно для подключения к MsSQL Server 2008 с PDO, вам нужно иметь хотя бы версию 11.0 , чтобы подключиться к SQL Server 2005+

Если вы хотите проверить свою версию драйвера, вы можете пройти через Control Panel >> Administrative Tools >> Data Sources (ODBC) а затем перейдите на вкладку « Drivers », чтобы узнать, какой собственный SQL Server Native Client вы уже установили. Если вы хотите обновить свой драйвер, в зависимости от конфигурации вашей ОС вы можете выбрать подходящую ссылку ниже …

Собственный клиент SQL Server 2012
x86 (32 бита) Пакет http://go.microsoft.com/fwlink/?LinkID=239647&clcid=0x409
x64 (64 бита) Пакет http://go.microsoft.com/fwlink/?LinkID=239648&clcid=0x409

Для Linux, Laravel 5 и php 7.1:

  1. Добавить соединение, как сказано здесь
  2. sudo apt install php7.1-sybase
  3. Попробуй еще раз 🙂