Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

  • sudo apt-get update

  • 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

добавить 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" < < < < < < < < < < < < < < < < < полу столбца, чтобы включить его → > </p>

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

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

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


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

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

heres приятный пакет https://github.com/ccovey/odbc-driver

Ответ 3

Для Linux, Laravel 5 и php 7.1:

  • Добавить соединение, как сказано здесь
  • sudo apt install php7.1-sybase
  • Повторите попытку:)

Ответ 4

ПОЛУЧИЛ РЕШЕНИЕ. ПОПРОБУЙТЕ ЭТО!

  1. Нажмите Протоколы для созданного вами экземпляра

    См.:https://i.stack.imgur.com/O6Dyn.png

  2. Включить настройки IP

    См.:https://i.stack.imgur.com/64j11.png

  3. Щелкните правой кнопкой мыши настройки IP> свойства> IP-адреса> IP All> IP-порт: установите значение 1433 в качестве порта базы данных SQL Server по умолчанию.

    См.: https://i.stack.imgur.com/ZQ7MR.png

Надеюсь, это поможет. Спасибо!