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

2022-08-30 18:29:06

我有一个在Laravel 3中完成的工作项目,我必须切换到MsSQL服务器(虽然不是我的调用,嗅...),我不明白这个数据库类型的Laravel配置...

我将内部的默认值更改为此,然后在数组中配置了主机,数据库,用户名,密码,但随后我收到以下错误消息:database.php'default' => 'sqlsrv'sqlsrv

此扩展需要 Microsoft SQL Server 2012 Native Client ODBC 驱动程序与 SQL Server 通信

经过一些研究,我发现我们需要SQLSRV的PDO,我已经将其作为版本5.4,并且在我的版本中,我得到了这个返回,所以它似乎都是正确的,但同时它似乎要求ODBC SQLSRV连接,我真的必须使用它吗?phpinfopdo_sqlsrv support : enabled

我宁愿直接从Laravel数据库连接连接...但是即使我需要它并且我创建了一些与服务器的ODBC连接,我该如何将它们放在我的配置中?这是我的配置(当然是用我的真实细节代替):my...

'sqlsrv' => array(
    'driver'   => 'sqlsrv',
    'host'     => 'myServerIP', 
    'database' => 'myDatabase',
    'username' => 'myUsername',
    'password' => 'myPassword',
    'prefix'   => '',
 ),

任何帮助将不胜感激,我发现唯一接近我的问题的是来自Laravel论坛的这个链接:SQL Server上的Laravel查询,但随后它就停止了,没有给出任何配置。


答案 1

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

  1. sudo apt-get update

  2. sudo apt-get install php5-sybase

如果你尝试安装php5-mssql,它无论如何都会安装php5-sybase,它是“Sybase / MS SQL Server module for php5”。

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

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

  1. 打开此文件: /etc/freetds/freetds.conf

在章节下和下[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
  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

  1. 编辑 php.ini 文件

首先找到带有php -i|grep php的文件.ini

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

使它 mssql.charset = “UTF-8” <<确保你删除了 ;半列启用它>>

保存并退出

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

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


其他方法:

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

这是一个不错的套餐 https://github.com/ccovey/odbc-driver


答案 2

啊,经过更多的研究,我发现我的驱动程序已经过时了,不足以连接到带有PDO的驱动程序,您需要至少具有版本才能连接到SQL Server 2005 +SQL Server Native Client 10.0MsSQL Server 200811.0

如果要验证驱动程序版本,可以浏览,然后单击选项卡以找出已安装的版本。如果要更新驱动程序,根据您的操作系统配置,您可以选择下面的正确链接...Control Panel >> Administrative Tools >> Data Sources (ODBC)DriversSQL 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


推荐