Как использовать соединение 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:
sudo apt-получить обновление
sudo apt-get install php5-sybase
если вы попытаетесь установить php5-mssql, он все равно установит php5-sybase, это "Sybase / MS SQL Server module for php5".
это заставит Laravel использовать драйвер dblib вместо sqlsrv.
проверьте этот файл для справки осветите\Database\Connectors\SqlServerConnector.РНР.
- открыть этот файл: / 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
- создать файл районов.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" >
сохранить и выйти
теперь перезагрузка ваш сервер (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
- попробую еще раз :)