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

时间:2013-08-13 16:01:28

标签: php laravel laravel-4 laravel-3

我得到了一个在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但是它会在没有给出任何配置的情况下停止。

4 个答案:

答案 0 :(得分:17)

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

  1. sudo apt-get update

  2. sudo apt-get install php5-sybase

  3. 如果您尝试安装php5-mssql,它将安装php5-sybase,它是“用于php5的Sybase / MS SQL Server模块”。

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

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

    1. 打开此文件: /etc/freetds/freetds.conf
    2. {p <1}}部分下的[global]

      下的

      添加tds version = 4.2 (没有;行开头的半列)

      并在上面一行下添加客户tds version = 8.0(没有;行开头的半列)

      这让司机编码的所有数据以UTF-8和避免数据的奇怪的字符

      文件如下所示:

      charset = UTF-8
      1. 在此目录 / etc / freetds 中创建文件 locales.conf ,并通过其中的以下内容: (这允许使用SQL Server正确解析日期)。
      2. [global]
        
                # TDS protocol version
        
        ;       tds version = 4.2
        
                tds version = 8.0
        
                client charset = UTF-8
        
        1. 编辑 php.ini 文件
        2. 首先使用 php -i |找到该文件grep php.ini

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

          使其 mssql.charset =“UTF-8”&lt;&lt;确保删除;要启用它的半列&gt;&gt;

          保存并退出

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

          2. 当然您知道您需要将数据库配置设置为默认使用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 并添加您的凭据。

          3. 其他方法:

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

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

答案 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:

  1. 按照here
  2. 添加连接
  3. sudo apt install php7.1-sybase
  4. 再试一次:))

答案 3 :(得分:0)

了解解决方案。尝试这个!

  1. 您创建的实例的点击协议

    引用:https://i.stack.imgur.com/O6Dyn.png

  2. 启用IP设置

    引用:https://i.stack.imgur.com/64j11.png

  3. 右键单击IP设置>属性> IP地址> IP全部> IP端口:将其设置为1433作为默认SQL Server数据库端口。

    引用:https://i.stack.imgur.com/ZQ7MR.png

希望它会有所帮助。谢谢!