我得到了一个在Laravel 3中制作的工作项目,我必须切换到MsSQL Server(不是我的电话,但是,嗅......)而且我不理解这个数据库类型的Laravel配置... < / p>
我将database.php
内的默认值更改为此'default' => 'sqlsrv'
然后我在sqlsrv
数组中配置了主机,数据库,用户名和密码,但后来收到此错误消息:
此扩展程序要求Microsoft SQL Server 2012 Native Client ODBC驱动程序与SQL Server`
进行通信
经过一些研究后,我发现我们需要SQLSRV的PDO,我已经将其作为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 query on SQL Server但是它会在没有给出任何配置的情况下停止。
答案 0 :(得分:17)
这就是我将Laravel应用程序连接到MS SQL Server所做的工作:
sudo apt-get update
sudo apt-get install php5-sybase
如果您尝试安装php5-mssql,它将安装php5-sybase,它是“用于php5的Sybase / MS SQL Server模块”。
这将使Laravel使用dblib驱动程序而不是sqlsrv。
查看此文件以获取参考Illuminate \ Database \ Connectors \ SqlServerConnector.php。
[global]
下的
添加tds version = 4.2
(没有;行开头的半列)
并在上面一行下添加客户tds version = 8.0
(没有;行开头的半列)
这让司机编码的所有数据以UTF-8和避免数据的奇怪的字符
文件如下所示:
charset = UTF-8
[global]
# TDS protocol version
; tds version = 4.2
tds version = 8.0
client charset = UTF-8
首先使用 php -i |找到该文件grep php.ini
然后打开文件并搜索 mssql.charset (它可能就像禁用这样; mssql.charset =“ISO-8859-1”)< / p>
使其 mssql.charset =“UTF-8”&lt;&lt;确保删除;要启用它的半列&gt;&gt;
保存并退出
现在重启您的服务器(nginx或apache或php-fpm)
当然您知道您需要将数据库配置设置为默认使用sqlsrv [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
并添加您的凭据。
其他方法:
您可以使用ODBC驱动程序连接
答案 1 :(得分:11)
SQL Server Native Client 10.0
的驱动程序已经过时且不足以连接到带有PDO的MsSQL Server 2008
,您需要至少拥有版本{{ 1}}以便连接到SQL Server 2005 +
如果您要验证驱动程序版本,可以浏览11.0
,然后点击Control Panel >> Administrative Tools >> Data Sources (ODBC)
标签,找出您已安装的Drivers
。如果您想更新驱动程序,根据您的操作系统配置,您可以选择以下正确的链接...
SQL Server 2012 Native Client
x86(32位)包http://go.microsoft.com/fwlink/?LinkID=239647&clcid=0x409
x64(64位)包http://go.microsoft.com/fwlink/?LinkID=239648&clcid=0x409
答案 2 :(得分:1)
对于Linux, Laravel 5 和php 7.1:
sudo apt install php7.1-sybase
答案 3 :(得分:0)
了解解决方案。尝试这个!
您创建的实例的点击协议
启用IP设置
右键单击IP设置>属性> IP地址> IP全部> IP端口:将其设置为1433作为默认SQL Server数据库端口。
希望它会有所帮助。谢谢!