我正在使用FreeTDS + UnixOdbc通过VPN连接到远程MSSQL DB。我也在使用Vagrant。我可以通过SSH连接到我的漫游箱,运行我的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如果我将版本更改为7.2,我认为freetds v0.91支持该版本,则会收到以下消息:
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' => '',
],https://stackoverflow.com/questions/44608830
复制相似问题