【问题标题】:Laravel 5.2 MSSQL connection issueLaravel 5.2 MSSQL 连接问题
【发布时间】:2017-11-20 09:17:21
【问题描述】:

我正在使用 FreeTDS + UnixOdbc 通过 VPN 连接到远程 MSSQL DB。我也在使用流浪者。我可以通过 SSH 连接到我的 vagrant box 并运行我的tsql 命令并连接到我在freetds.conf 文件中设置的实例。

但是 Laravel 应用程序本身没有连接。它由 Nginx 驱动。我在laravel.log 中收到PDOException: SQLSTATE[HY000] Read from the server failed 消息。

这是我的freetds.conf 文件:

[SDSQL2DEV]
host = xx.xxx.xx.xx
instance = sdsql2\dev
port = 65156
client charset = UTF-8
tds version = 4.2

请注意,我必须将 tds 版本设置为 4.2,否则无论我做什么,我都无法使用 tsql 连接或运行查询。看来我可能有更深层次的问题。

我确定正在使用正确的 freetds.conf 文件。我可以运行tsql -C 并查看我切换的设置生效。以下是输出:

Version: freetds v0.91
freetds.conf directory: /etc/freetds
MS db-lib source compatibility: no
Sybase binary compatibility: yes
Thread safety: yes
iconv library: yes
TDS version: 4.2
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: yes

如果我将版本更改为我认为 freetds v 0.91 支持的 7.2,那么我会收到以下消息:

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 100 (severity 11):
unrecognized msgno

我对 Laravel 非常有经验,只是没有与 MSSQL 集成,但我认为我的 Laravel 设置配置正确。他们在这里:

// .env
MS_CONNECTION="sqlsrv"
MS_HOST="xx.xxx.x.x"
MS_PORT="65156"
MS_DATABASE="dbname"
MS_USERNAME="dbuser"
MS_PASSWORD="dbpass"

// config/database.php
'sqlsrv' => [
    'driver' => 'sqlsrv',
    'host' => env('MS_HOST', 'SDSQL2DEV'),
    'port' => env('MS_PORT', '65156'),
    'database' => env('MS_DATABASE', 'forge'),
    'username' => env('MS_USERNAME', 'forge'),
    'password' => env('MS_PASSWORD', ''),
    'collation' => 'SQL_Latin1_General_CP1_CI_AS',
    'prefix' => '',
],

【问题讨论】:

  • SQL Server 版本是多少?
  • Microsoft SQL Server 2014 - 12.0.4100.1 (X64)
  • 您是否尝试过将 freetds.conf 的 tds version 设置为 7.0、7.1 或 8.0?

标签: sql-server laravel freetds


【解决方案1】:

我终于想通了。这不是与 Laravel、FreeTDS 或 MSSQL 相关的问题,而是我的 OpenVPN 配置和数据压缩的问题。我使用的 OpenVPN 客户端配置文件设置了 comp-lzo off,但为了使其正常工作,我需要将其更新为 comp-lzo yes。当我在日志文件中看到与压缩相关的通知时,我注意到了这一点,OpenVPN 文档引导我进行了更改。

希望这对将来的某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-10
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多