我将 FreeTDS 驱动程序与 DBD::Sybase 一起使用,连接到 MS SQL Server。当我查询某些记录的某些值时,出现此错误:
DBD::Sybase::st fetchrow_arrayref failed: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99)
Server , database
Message String: WARNING! Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?').
Run Code Online (Sandbox Code Playgroud)
这似乎发生在包含特殊 Windows 字符集字符的记录中,例如从人们的 Outlook 和 Word 消息中复制和粘贴的卷曲引号。
不幸的是,我对这个数据库没有任何控制权;清理输入的方式显然是要走的路,但对我来说不可用。
我需要更改哪些 FreeTDS 设置才能成功查询这些记录?
附加信息:
查询在 tsql 中运行良好。我只通过 Perl 的 DBD::Sybase 接口得到这个错误。(我应该通过其他方式进行测试吗?我还没有安装 PHP 或 Python 的专业知识。我有 jTDS 并且可以使用它,但我认为这是一个完全不同的实现,而不是 FreeTDS 的接口。)
添加
client charset = …Run Code Online (Sandbox Code Playgroud) 自托管盒子,
RHEL 6
PHP 5.3.3
PDO 安装了
freetds 安装了
pdo_dblib - 到目前为止没有运气安装
我的目标是在 sybase 中使用 PDO。试图从适当版本的 php 源代码安装 pdo_dblib。我尝试了多种方法并搜索了很多有关此主题的帮助,但尚未成功。
$ ./configure
$ make
$ su root
Password:
$ make install
Run Code Online (Sandbox Code Playgroud)
这是成功的
在 /ext/pdo_dblib 文件夹中:
$ phpize
$ ./configure
$ make
$ make test
Run Code Online (Sandbox Code Playgroud)
错误输出:
PHP Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: …Run Code Online (Sandbox Code Playgroud) freetds.log 文件使系统过载,因此我更改了 /etc/freetds.conf 中的调试标志:
; dump file = /tmp/freetds.log
#; debug flags = 0xffff
; debug flags = 0x80
Run Code Online (Sandbox Code Playgroud)
如何重新启动 freetds 或 unixodbc?即使我注释掉该dump file = /tmp/freetds.log行,也没有任何效果。
我正在尝试使用 FreeTDS 从 Linux 服务器 (RHEL v7) 连接到运行 MS SQL Server 2014 的单独服务器。但是,当尝试使用 tsql 连接时,我收到以下错误(错误消息取决于我是否包含用户名和密码):
$ tsql -S MYSERVER
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20002 (severity 9):
Adaptive Server connection failed
There was a problem connecting to the server
$ tsql -S MYSERVER -U myusername -P mypassword
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20017 (severity 9):
Unexpected EOF from the server
Error 20002 (severity 9):
Adaptive Server …Run Code Online (Sandbox Code Playgroud) 我有一台 Ubuntu 12.04 服务器,我正在尝试建立与 MSSQL 数据库的连接。
我已经成功使用tsqland连接isql,但osql不起作用,并且使用 PDO 与 PHP 连接也不起作用。我会尽力提供尽可能多的信息,如果您需要更多信息,请告诉我,我会的编辑。
freetds.conf:
[MSSQL]
host = TPSACC
port = 54488
tds version = 8.0
Run Code Online (Sandbox Code Playgroud)
odbc.ini:
[MSSQL]
Description = MS SQL connection to PRODUCTION database
Driver = FreeTDS
Database = PRODUCTION
Server = TPSACC
UserName = sa
Password = pass
Trace = No
TDS_Version = 8.0
Port = 54488
Run Code Online (Sandbox Code Playgroud)
odbcinst.ini:
[FreeTDS]
Description = ODBC for Microsoft SQL
Driver = /usr/local/lib/libtdsodbc.so
UsageCount = 1 …Run Code Online (Sandbox Code Playgroud)