如何在Laravel中使用SQL Server连接?

ghi*_*ing 21 php laravel laravel-4 laravel-3

我得到了一个在Laravel 3中制作的工作项目,我必须切换到MsSQL Server(不是我的电话,但是嗅......)而且我不理解这个数据库类型的Laravel配置......

我将默认内部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'   => '',
 ),
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,我发现接近我的问题的唯一的事情是来自Laravel论坛的这个链接:Laravel在SQL Server上查询但是它只是在没有给出任何配置的情况下停止.

Mah*_*alt 18

这就是我将Laravel应用程序连接到MS SQL Server所做的工作:

  1. sudo apt-get update

  2. sudo apt-get install php5-sybase

如果你尝试安装php5-mssql它会安装php5-sybase,它是"用于php5的Sybase/MS SQL Server模块".

这将使Laravel使用dblib驱动程序而不是sqlsrv.

查看此文件以获取参考Illuminate\Database\Connectors\SqlServerConnector.php.

  1. 打开这个文件:  /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
Run Code Online (Sandbox Code Playgroud)
  1. 在这个目录/ etc/freetds中创建文件locales.conf并通过其中的以下内容:(这允许使用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
Run Code Online (Sandbox Code Playgroud)
  1. 编辑php.ini文件

首先用php -i |找到该文件 grep php.ini

然后打开文件并搜索  mssql.charset       (它可能像这样禁用         ; mssql.charset ="ISO-8859-1"     )

make it  mssql.charset ="UTF-8"    <<确保你删除; 半列启用它>>

保存并退出

  1. 现在重启你的服务器(nginx或apache或php-fpm)

  2. 当然你知道你需要将数据库配置设置为默认使用sqlsrv 'default' => 'sqlsrv',并添加你的凭据.


其他方法:

您可以使用ODBC驱动程序进行连接

这是一个很好的包  https://github.com/ccovey/odbc-driver


ghi*_*ing 11

经过大量研究后,我发现我的驱动程序SQL Server Native Client 10.0已经过时且不足以连接到MsSQL Server 2008PDO,你需要至少有版本11.0才能连接到SQL Server 2005+

如果要验证驱动程序版本,可以通过Control Panel >> Administrative Tools >> Data Sources (ODBC),然后单击Drivers选项卡以找出SQL Server Native Client已安装的驱动程序.如果您想更新驱动程序,根据您的操作系统配置,您可以选择以下正确的链接...

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