无法为CMS WebGUI创建数据库链接

时间:2015-12-11 13:27:36

标签: sql-server linux perl freetds unixodbc

我已经更新了整个场景(最后一个是i686和x64库之间的冲突)

现在我有一个带有新的CentOS 6.6 32位的VPS,安装了unixODBC,FreeTDS和WebGUI

我可以通过isql和perl脚本与SQL Server 2008完美连接。

但我的目标是为WebGUI(一个基于perl的开源CMS)创建数据库链接

odbcinst -j

的输出
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 4
SQLLEN Size........: 4
SQLSETPOSIROW Size.: 2

/etc/odbcinst.ini

[FreeTDS]
Description=v0.95.73
Driver=/usr/lib/libtdsodbc.so.0.0.0
UsageCount=1

/etc/odbc.ini

[DSN]
Description=DNS description
Driver=FreeTDS
Server=XX.XX.XX.XX
Database=myDatabase
Port=1433 #sql server default port
TDS_Version=7.3
Trace=Yes
TraceFile=/tmp/sql.log

当我执行这个perl脚本时,它运行正常。

#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use DBD::ODBC;

my $dsn = "DBI:ODBC:DSN"; # Same DSN as above
my $db_user = "dbuser";
my $db_pass = 'dbpass';
my $dbh = DBI->connect($dsn, $db_user, $db_pass) or die "$DBI::errstr\n";
print "Connected\n";
my $query = "Select * from myTable";
my $sth = $dbh->prepare($query) or die "$DBI::errstr\n";
$sth->execute or die "$DBI::errstr\n";
# go do stuff!
# Close the database
$sth->finish;
$dbh->disconnect;

这是我正在尝试添加到WebGUI的数据库链接 Adding a database link in WebGUI

当我提交更改时,我在浏览器中收到此错误:

代理错误

代理服务器收到来自上游服务器的无效响应。 代理服务器无法处理请求POST / home。

原因:从远程服务器读取错误

modproxy.error.log

[Wed Dec 23 14:15:42 2015] [error] [client IP] proxy: Error reading from remote server returned by /home, referer: http://VPSIP/home?op=editDatabaseLink;dlid=y2Yf1_oEJD6-Wm-T-yHy-w
[Wed Dec 23 14:15:58 2015] [error] [client IP] (20014)Internal error: proxy: error reading status line from remote server 127.0.0.1:8081, referer: http://VPSIP/home?op=editDatabaseLink;dlid=y2Yf1_oEJD6-Wm-T-yHy-w
[Wed Dec 23 14:15:58 2015] [error] [client IP] proxy: Error reading from remote server returned by /home, referer: http://VPSIP/home?op=editDatabaseLink;dlid=y2Yf1_oEJD6-Wm-T-yHy-w

modperl.error.log

[Wed Dec 23 14:15:59 2015] [notice] child pid 7766 exit signal Segmentation fault (11)

也许WebGUI试图从SQL Server而不是mysql加载/ home? (我只想连接到SQL Server来获取一些产品,没有别的)

任何帮助将不胜感激 此致

3 个答案:

答案 0 :(得分:0)

尝试:export LD_LIBRARY_PATH = / usr / local / lib

Source

答案 1 :(得分:0)

odbc.ini中,您可以指定odbcinst.ini中定义的DRIVER。

试试odbc.ini

[DSN]
Description=DNS description
Driver=FreeTDS
Server=XX.XX.XX.XX
Database=myDatabase
Port=1433 #sql server default port
TDS_Version=7.3

另外,请确保使用适合您正在使用的SQL Server版本和FreeTDS版本的TDS版本。我建议坚持使用7.2,除非你需要7.3:http://www.freetds.org/userguide/choosingtdsprotocol.htm我已经在这个回购中获得了示例odbc.iniodbcinst.inifreetds.conf个文件,如果他们帮助:https://github.com/FlipperPA/django-python3-vagrant/tree/master/examples

祝你好运!

答案 2 :(得分:0)

好的,刚刚添加了

use DBD::ODBC;

到文件SQL.pm和WebGUI能够识别unixODBC(以及FreeTDS)。

Merry X' Mas !!! :d