#php #sql-server #linux #zend-framework #freetds
#php #sql-сервер #linux #zend-framework #freetds
Вопрос:
Я пытаюсь подключиться к серверу MSSQL, но у меня возникают некоторые трудности. Во-первых, мой сервер выдает следующую ошибку:
Сообщение: SQLSTATE[HY000] Не удается подключиться: Адаптивный сервер недоступен или не существует (степень серьезности 9)
Что ж, я думаю, что установил FreeTDS успешно, потому что каждая проверка, которую я сделал, показывает мне, что все в порядке.
Конфигурации MSSQL:
Конфигурация PDO:
Моя попытка подключиться:
[local : production]
resources.db.adapter = "pdo_mssql"
resources.db.params.pdoType = "dblib"
resources.db.params.charset = "utf8"
resources.db.isDefaultTableAdapter = true
resources.db.params.driver_options.ReutlocarnDatesAsStrings = true
resources.db.params.dbname = "database"
resources.db.params.host = "server-ip"
resources.db.params.username = "user"
resources.db.params.password = "password"
Модули, которые они установили
rodrigo@thx1138 ~ [15:51:16]
$ php -m | grep "mssql"
mssql
rodrigo@thx1138 ~ [15:51:28]
$ php -m | grep "pdo_"
pdo_dblib
pdo_mysql
Мой freetds.config:http://pastebin.com/qA0XwFVD
Мой вывод nmap
Starting Nmap 6.40 ( http://nmap.org ) at 2014-07-02 17:48 BRT
Nmap scan report for host (IP)
Host is up (0.00049s latency).
Not shown: 919 filtered ports, 74 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
1433/tcp open ms-sql-s
3128/tcp open squid-http
3389/tcp open ms-wbt-server
Это мои настройки freetds
tsql -C
Compile-time settings (established with the "configure" script)
Version: freetds v0.91
freetds.conf directory: /usr/local/etc
MS db-lib source compatibility: no
Sybase binary compatibility: no
Thread safety: yes
iconv library: yes
TDS version: 5.0
iODBC: no
unixodbc: no
SSPI "trusted" logins: no
Kerberos: no
И когда я пытаюсь подключиться через FreeTDS, появляется ошибка:
rodrigo@thx1138 ~
> $ tsql -S server-ip -U user
Password:
locale is "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=pt_BR.UTF-8;LC_TIME=pt_BR.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=pt_BR.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=pt_BR.UTF-8;LC_NAME=pt_BR.UTF-8;LC_ADDRESS=pt_BR.UTF-8;LC_TELEPHONE=pt_BR.UTF-8;LC_MEASUREMENT=pt_BR.UTF-8;LC_IDENTIFICATION=pt_BR.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20009 (severity 9):
Unable to connect: Adaptive Server is unavailable or does not exist
OS error 111, "Connection refused"
There was a problem connecting to the server
На самом деле несколько месяцев назад я уже выполнил успешную установку, но, честно говоря, не знаю, что я сделал, и, к сожалению, мне пришлось отформатировать свой компьютер, поэтому моя проблема в том, что я не могу сделать это снова. Я думаю, что моя проблема между моим dblib
и FreeTDS
, но не могу найти, что я делаю неправильно. Заранее спасибо за любую помощь.
Ubuntu: 14.04 Версия PHP 5.5.9-1ubuntu4.2
Ответ №1:
При использовании -S
флага для tsql
вам необходимо указать название серверной секции в вашем freetds.conf
файле. В вашем файле вы определили серверы с именами egServer50
и localhost
. Если вы хотите использовать IP-адрес напрямую, вы должны использовать -H
флаг вместе с -p
flag, а не -S
флаг.
Комментарии:
1. Спасибо вам за ваш ответ. На самом деле я неправильно использовал
tsql
инструмент, но теперь я получаю этоError 20017 (severity 9): Unexpected EOF from the server OS error 115, "Operation now in progress" Error 20002 (severity 9): Adaptive Server connection failed There was a problem connecting to the server
2. Просто для большей ясности. Моя проблема заключается в моей связи с PHP. Я пытался протестировать свое соединение с tsql и заметил, что не могу подключиться к своему серверу.
3. Можете ли вы показать PHP-код, с помощью которого вы пытаетесь подключиться?
4. На самом деле нет. Но я использую Zend Framework, так что наверху есть мои настройки подключения. Но эта проблема приведет к сбою любой части моего кода, где мне нужно использовать мои модели.
5. ОК. Просматривая мою единственную рабочую установку pdo_mssql, я также установил имя хоста в
freetds.conf
раздел server. Итак, вы бы установилиresources.db.params.host
в качестве одного из названий раздела в вашемfreetds.conf
файле, например, либоegServer50
, либоlocalhost
.