2011-05-18 102 views
2

我有一個將PosgreSQL數組數據類型解析爲perl的可移植性問題。解析PostgreSQL數組數據類型爲數組到perl

在SUSE Linux 4.3.2和perl v5.10.0上運行PostgreSQL 8.3.7的一臺機器上,postgres數組數據類型被解析爲perl數組,並且在Red Hat 4.1.2-46上運行PostgreSQL 8.4.4的其他機器上進行解析, perl v5.8.8相同的數據類型被解析爲表示posgres數組的字符串,例如。 '{{4315}}'。在這兩種情況下使用相同的非常簡單的代碼。

use DBI; 
$dbh = DBI->connect(DBI:pg [...]); 
$res = $dbh -> selectall_arrayref(select [...]); 

而現在的問題:

我怎麼能強迫一個行爲,最好是前者(解析爲Perl數組)? 這種行爲依賴於什麼? (perl版本?驅動程序?postgres設置?,postgres版本?)

回答

1

那麼,official docs說你必須設置$dbh->{pg_expand_array}真實值。

雖然我沒有自己檢查過。

+0

太好了,謝謝!不幸的是,pg_expand_array在將postgreSQL數組解析爲字符串的機器上不存在。可能是DBI編譯不正確? – 2011-05-18 12:40:54

+0

而「不存在」是指我無法打印或設置它。 :) – 2011-05-18 12:54:00

+0

它必須是'DBD :: Pg',而不是DBI本身。 – Dallaylaen 2011-05-18 13:26:43