首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5.2 MSSQL连接问题

问Laravel 5.2 MSSQL连接问题
EN

Stack Overflow用户
提问于 2017-06-18 03:53:47
回答 0查看 1.2K关注 0票数 1

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

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

这是我的freetds.conf文件:

代码语言:javascript
复制
[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并查看我切换的设置是否生效。下面是其中的输出:

代码语言:javascript
复制
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

如果我将版本更改为7.2,我认为freetds v0.91支持该版本,则会收到以下消息:

代码语言:javascript
复制
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设置。下面是它们:

代码语言:javascript
复制
// .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' => '',
],
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44608830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档