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

у меня есть рабочий проект, сделанный в Laravel 3, который я должен переключиться на сервер MsSQL (не мой вызов, хотя, sniff...) и я не понимаю конфигурацию 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 но тогда он просто останавливается, не давая никаких конфигураций.

3 ответов


вот что я сделал, чтобы подключить приложение Laravel к MS SQL Server:

  1. sudo apt-получить обновление

  2. sudo apt-get install php5-sybase

если вы попытаетесь установить php5-mssql, он все равно установит php5-sybase, это "Sybase / MS SQL Server module for php5".

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

проверьте этот файл для справки осветите\Database\Connectors\SqlServerConnector.РНР.

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

под и под tds version = 4.2

добавить tds version = 8.0 (без ; semi столбца в начале строки)

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

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

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

[global]

        # TDS protocol version

;       tds version = 4.2

        tds version = 8.0

        client charset = UTF-8
  1. создать файл районов.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. попробую еще раз :)