Как использовать соединение 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, но тогда это просто останавливаться без каких-либо конфигураций.
Ответы
Ответ 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:
Если вы попытаетесь установить php5-mssql, он все равно установит php5-sybase, это "модуль Sybase/MS SQL Server для php5".
это заставит Laravel использовать драйвер dblib вместо sqlsrv.
проверить этот файл для справки Illuminate\Database\Connectors\SqlServerConnector.php.
- откройте этот файл: /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
- создайте файл 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
- отредактируйте файл php.ini
сначала найдите файл с php -i | grep php.ini
затем откройте файл и найдите mssql.charset (он, вероятно, будет как отключен как ; mssql.charset = "ISO-8859-1" )
сделать его mssql.charset = "UTF-8" < < < < < < < < < < < < < < < < < полу столбца, чтобы включить его → > </p>
сохранить и выйти
-
теперь перезапустите ваш сервер (nginx или apache или php-fpm)
-
конечно, вы знаете, что вам нужно установить конфигурацию базы данных для использования 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
ПОЛУЧИЛ РЕШЕНИЕ. ПОПРОБУЙТЕ ЭТО!
Нажмите Протоколы для созданного вами экземпляра
См.:https://i.stack.imgur.com/O6Dyn.png
Включить настройки IP
См.:https://i.stack.imgur.com/64j11.png
Щелкните правой кнопкой мыши настройки IP> свойства> IP-адреса> IP All> IP-порт: установите значение 1433 в качестве порта базы данных SQL Server по умолчанию.
См.: https://i.stack.imgur.com/ZQ7MR.png
Надеюсь, это поможет. Спасибо!