У меня есть рабочий проект, сделанный в 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:
Обновление sudo apt-get
sudo apt-get install php5-sybase
если вы попытаетесь установить php5-mssql, он все равно установит php5-sybase, это «модуль Sybase / MS SQL Server для php5».
это заставит Laravel использовать драйвер dblib вместо sqlsrv.
посмотрите этот файл для справки Illuminate \ Database \ Connectors \ SqlServerConnector.php.
в разделе [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
[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 -i | grep php.ini
затем откройте файл и выполните поиск mssql.charset (это, вероятно, будет выглядеть как отключено : mssql.charset = "ISO-8859-1" )
сделайте это mssql.charset = "UTF-8" << убедитесь, что вы удалили; полу столбца, чтобы включить его >>
Сохранить и выйти
перезагрузите сервер (nginx или apache или php-fpm)
конечно, вы знаете, что вам нужно установить конфигурацию базы данных для использования 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:
sudo apt install php7.1-sybase