#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 обесценивается.