紀錄一下 OTRS 連 SQL Server 的東西

在 Perl 要連到 MS SQL Server 真的是很麻煩, 如果是透過 ODBC 的話, 則要設定好 FreeTDS 還有 unixODBC, 設定檔大概像下面這樣吧:

FreeTDS (freetds.conf)

[OTRS]
host = 192.168.1.1  
port = 1433  
tds version = 7.0  
client charset = UTF-8```

unixODBC (odbc.ini)

[OTRS] Driver = FreeTDS
Description = Microsoft SQL Server(OTRS)
Trace = No
Servername = OTRS
Database = otrs_db```

如果都運作正常的話, 執行下面的 Perl code 應該不會有錯誤訊息。

use strict;  
use DBI;<p>my $dbh = DBI->connect( 'dbi:ODBC:OTRS',  
                        'username',
                        'password',
                      ) || die "Database connection not made: $DBI::errstr";
my $sql = qq{ SELECT * FROM otrs_table};  
$dbh->do( $sql );</p><p>$dbh->disconnect();</p>```

好吧! 基本上到這裡我都沒啥問題, 都很正常阿!!! 我可以透過上面這段 Perl 順利連上 MS SQL Server, 問題是 OTRS 用 ODBC 怎麼設都連不上.. WTF

一直到前天, 我才裝了 DBD:Sybase, 捨棄 DBD:ODBC, 然後改一下 dsn, 幹! 馬上就連上了!!! 阿!!!~ SQL Server 我討厭你 ~"~

咳~ 如果 unixODBC 裝不起來, 可以考慮用 Sybase XD 因為 Sybase 只需要透過一層 freeTDS, 不用 ODBC, 可以減少很多問題吧。

為了連 MS SQL Server, 花了我不知道多久時間, 吐血不知道吐了幾天 Orz 唉, OTRS 連 MySQL 都超順的阿!! 偏偏就是要連 MS SQL Server, anyway~ 記錄一下 OTRS CustomerUser external database 的設定:

OTRS

$Self->{CustomerUser} = { Name => 'Database Backend', Module => 'Kernel::System::CustomerUser::DB', Params => { # if you want to use an external database, add the # required settings DSN => 'dbi:Sybase:server=OTRS;database=otrsdb', User => 'username', Password => 'password', Table => 'otrstable', }, [...]```

唉~ 不懂 Perl 真的是很辛苦, 亂搞一通阿 XD 雖然之前在寫 Mac 的 Dashboard widget 有用到過 perl …..

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!