PDOException: ошибка подключения к адаптивному серверу SQLSTATE 01002 (серьезность 9)

#php #laravel #freetds #sqlsrv #unixodbc

#php #laravel #freetds #sqlsrv #unixodbc

Вопрос:

Я следил за некоторыми ответами через stackoverflow.

Мой odbc. ini (находится в /etc/odbc.ini)

 [MSSQL]
Description = MS SQL Server
Driver = /usr/local/lib/libtdsodbc.so
Server = host.of.the.server
UID = myusername
PWD = mypassword
ReadOnly = No
Port = 1433
tds version = 8.0
  

Мой odbcinst.ini

 [FreeTDS]
Description = FreeTDS driver
Driver = /usr/local/lib/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so
FileUsage = 1
UsageCount = 1
  

Сначала оба этих файла пусты. Я просто скопировал ответ из других потоков.

Мой freetds.conf

 # Global settings are overridden by those in a database
# server specific section
[global]
        # TDS protocol version
;       tds version = 8.0

        # Whether to write a TDSDUMP file for diagnostic purposes
        # (setting this to /tmp is insecure on a multi-user system)
;       dump file = /tmp/freetds.log
;       debug flags = 0xffff

        # Command and connection timeouts
;       timeout = 10
;       connect timeout = 10

        # If you get out-of-memory errors, it may mean that your client
        # is trying to allocate a huge buffer for a TEXT field.
        # Try setting 'text size' to a more reasonable limit
        text size = 64512

# A typical Sybase server
[egServer50]
        host = symachine.domain.com
        port = 5000
        tds version = 8.0

# A typical Microsoft server
[egServer70]
        host = ntmachine.domain.com
        port = 1433
        tds version = 7.0
  

Я использую Laravel. Теперь, после того, как я использовал

 php artisan migrate 
  

Я получил сообщение об ошибке: PDOException: ошибка подключения к адаптивному серверу SQLSTATE 01002 (серьезность 9)

Некоторые из ответов stackoverflow: возможно, причиной является версия TDS.

Поэтому я использовал tsql -C

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

Я использую Ubuntu 16

Комментарии:

1. Решит ли драйвер EasySoft-ODBC всю мою проблему? easysoft.com/products/data_access/odbc-sql-server-driver /…

Ответ №1:

Попробуйте изменить версию TDS на 7.0 или 8.0 и убедитесь, что у вас установлены следующие пакеты —

 php5-sybase 
php5-odbc 
  

Комментарии:

1. как изменить мою версию TDS. Я уже отредактировал все файлы .ini.

2. Ваш файл freetds.conf отображает версию как 8.0, но при запуске tsql -C версия TDS указана как 5.0 Вы уверены, что tds ссылается на правильный файл freetds.conf? Эта ссылка моя справка — freetds.org/userguide/freetdsconf.htm

3. Кроме того, на будущее вы захотите использовать TDS версии 7.1, а не 8.0. Никогда не используйте 8.0, это устаревшее значение, которое будет удалено из FreeTDS.

4. Хороший совет. Я не знал, что 8.0 обесценивается.