我在Laravel 3中制作了一个工作项目,必须切换到MsSQL Server(虽然不是我的电话,嗅探...),但我不理解此数据库类型上的Laravel配置...
我将database.php
内的默认值更改为此'default' => 'sqlsrv'
,然后在sqlsrv
数组中配置了主机,数据库,用户名,密码,但随后出现此错误消息:
经过一番研究,我发现我们需要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,但随后就停止了而未提供任何配置。
最佳答案
这就是我将Laravel应用程序连接到MS SQL Server的过程:
如果您尝试安装php5-mssql,它将仍然安装php5-sybase,它是``php5的Sybase/MS SQL Server模块''。
这将使Laravel使用dblib驱动程序代替sqlsrv。
checkout 该文件以供引用Illuminate\Database\Connectors\SqlServerConnector.php。
在
[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
(这允许使用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 -i查找文件。 grep php.ini
然后打开文件并搜索 mssql.charset (可能会像这样被禁用; mssql.charset =“ISO-8859-1” )
将其设置为 mssql.charset ==“UTF-8” <>
保存并退出
'default' => 'sqlsrv',
并添加您的凭据。 其他方法:
您可以使用ODBC驱动程序进行连接
这是一个很好的软件包https://github.com/ccovey/odbc-driver