【问题标题】:Connection error to mssql from Centos7从 Centos7 到 mssql 的连接错误
【发布时间】:2018-02-09 10:36:22
【问题描述】:

我用 nginx/php5.6 安装了 Centos7。 MS SQL 2008 R2 正在另一台服务器上运行。 MSSQL 绝对允许 tcp 连接、自定义(非域)用户、禁用防火墙,我可以使用 HeidiSQL 和另一台 Windows 机器的设置连接到它。 我可以从 Centos 远程登录到 MSSQL(我看到日志错误“网络数据包有效负载中指定的长度与读取的字节数不匹配;连接已关闭。请联系客户端库的供应商。”在 MSSQL 中使用 centos ip 地址日志,所以这里没有错误)。

我无法使用 php_mssql 或 sqlcmd 从 centos 连接到 mssql;

在 sqlcmd 期间:

Microsoft (R) SQL Server Command Line Tool
Version 13.1.0007.0 Linux

[root@***]# /opt/mssql-tools/bin/sqlcmd -S *** -U ***
Password:
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : TCP Provider: Timeout error [258]. .
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Unable to complete login process due to delay in prelogin response.

php交互期间:

php > mssql_connect('***:***', '***','***');
PHP Warning:  mssql_connect(): Unable to connect to server: *** in php shell code on line 1

我也试过 tsql/freetds:

/etc/freetds.conf has section
[myserver]
        host = ***
        port = ***
        client charset = UTF-8
        tds version = 8.0 //also tried 7

[root@*]# tsql -S myserver -U ***
Password:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
 5 //begins to count, i could't understand what does it mean

还尝试将其全部清理并安装带有 sqlsrv 扩展名的 php7.0 - 同样的问题;

有一些网络奇怪 - Centos serv 和 MSSQL 在不同的网络中,我无法从该服务器 ping mssql,但可以远程登录,我在连接尝试期间使用的是 ip,而不是主机名,所以不要认为它是很重要。

现在我不知道在哪里挖掘,有什么建议吗?

【问题讨论】:

  • 你试过使用PDO with dblib driver吗?使用 php 5.6 和 MSSQL Server 2k8 在 debian 上运行良好...
  • @Ayak973 谢谢你的想法,是的,同样的错误。但是问题解决了,是网络配置错误造成的,我不明白怎么可能——建立telnet连接,但无法正常连接,但我们的IT人员不到半小时就修复了这个问题。

标签: php sql-server linux centos7 sqlcmd


【解决方案1】:

这是由于网络配置错误造成的,我不知道具体是怎么可能的- 建立telnet连接,但无法正常连接,但我们的IT人员不到半小时就修复了这个问题。

【讨论】:

    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 2014-12-09
    • 2016-11-26
    • 2018-12-28
    • 2020-05-11
    • 1970-01-01
    • 2021-06-25
    • 2013-06-09
    相关资源
    最近更新 更多