【问题标题】:How to use SQL Server connection in Laravel?如何在 Laravel 中使用 SQL Server 连接?
【发布时间】:2013-08-15 08:28:54
【问题描述】:

我有一个在 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'   => '',
 ),

任何帮助将不胜感激,我发现唯一与我的问题很接近的是 Laravel 论坛中的这个链接:Laravel query on SQL Server 但随后它就停止了,没有提供任何配置。

【问题讨论】:

    标签: php laravel laravel-4 laravel-3


    【解决方案1】:

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

    1. sudo apt-get 更新

    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

    添加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

    【讨论】:

    • 您的回答非常有用,但在第 5 步中:“php -i | grep php.ini”将为您提供 cli php.ini 的路径。这样对吗?不应该是nginx或者apache使用的php.ini吗?
    • @Polak 第 5 步将搜索存在的每个 php.ini 文件!!然后您选择要编辑的那个。
    • 对不起@MahmoudZalt 我理解你的意思,我只是认为命令“php -i | grep php.ini”并没有为系统中的每个 php.ini 找到,只是在加载的 php cli文件,因此,当您尝试从 apache 查找 php.ini 时,它不会按预期工作,因为命令行中的 php -i (info) 与 apache 中的 phpinfo() 不同,它们会给出根据其配置,您将获得不同的输出。例如,我刚刚在我的 VPS 中运行了“php -i grep php.ini”,它没有返回 /etc/php5/apache2/php.ini 好吧,我可能错了,请检查一下
    • 这一切都在我的 freetds.conf 中。你拯救了我的一天,谢谢。
    • 我希望我能在每一次该死的时间上投票赞成这个答案,我必须回到这里。去年我已经使用了这个答案六次,每次我需要设置一个新服务器时。这可能应该在官方 laravel 文档中作为附注。
    【解决方案2】:

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

    如果你想验证你的驱动程序版本,你可以通过Control Panel >> Administrative Tools >> Data Sources (ODBC)然后点击Drivers标签来找出你已经安装了哪个SQL 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

    【讨论】:

      【解决方案3】:

      对于 Linux,Laravel 5 和 php 7.1:

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

      【讨论】:

        【解决方案4】:

        找到了解决方案。试试这个!

        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

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

        【讨论】:

        • 请用文字说明需要什么。图片在某些屏幕上可能无法阅读,并且(通常)其内容无法搜索。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-25
        • 2015-07-12
        • 2015-01-03
        • 2020-06-11
        相关资源
        最近更新 更多