如何在 Raspbian 設定成 BIG5 Character 之後使用 PostgreSQL?
Raspbian 設定成中文語系 BIG5 後,將無法安裝 PostgreSQL 因為
PostgreSQL 不支援 BIG5 語系,Initial DB 不會成功;
若先安裝好 PostgreSQL 後再將 Raspbian 設定成中文語系
BIG5,表面上 Raspbian 會回應成功,但實際上是設定不了(Bug?);
但是 PostgreSQL 可以在英文語系環境中寫入 BIG5 或是 UTF-8 中文碼;這點已證實,
PostgreSQL 這裡比 Oracle 強!
並且 Raspbian 可獨立安裝 psql (sudo apt-get install -y
postgresql-client-9.6) 及 ecpg (sudo apt-get -y install libecpg-dev)
所以安裝好 BIG5 的 Raspbian 可以只裝 psql 及 ecpg
然後連到安裝英文語系的資料庫(remote connection),並使用 BIG5 碼;
只安裝 psql 的 Raspbian 連到遠端資料庫的方法:
psql -h xxx.xxx.xxx.xxx db_name
例:
psql -h 192.168.1.230 pi
Embedded SQL 連到遠端的方式,opendb code:
int db_OpenDB ()
{
// connect to remote Server
EXEC SQL CONNECT TO
pi@192.168.1.225 USER pi USING abcdefg12345;
return (int)sqlca.sqlcode;
}
說明:
pi@192.168.1.225 =>
database_name@host_name_or_remote_IP
USER pi USING abcdefg12345 => pi 為 登入Remote Server
的 User Name;
abcdefg12345 為登入 Remote Server 的 Password。
而要將英文環境中的 BIG5 碼讀出來,在存取前,需先使用下面的 SQL 語法來設定 Remote
Database:
SET client_encoding TO 'BIG5'; <-- 此為 SQL
語法,直接下在程式裡或psql裡。
遠端 Server 要接受 Remote 的連線,要修改 postgresql.conf 及
pg_hba.conf 兩個檔
PostgreSQL 9.6 這個版本,將上述兩個檔案放在:/etc/postgresql/9.6/main
postgresql.conf 要加上:
listen_addresses='*'
pg_hba.conf 要加上遠端認證方式,同網域存取時,加上:
host all all 192.168.1.0/24 trust
上面是設定的意思是信任 192.168.1 這個網域,只要是該網域的Client連上來,都不用做任何的認證;
192.168.1.0/24 => 192.168.1 這個網域 /24 = 255.255.255.0
trust => 信任,不用認證;這裡也可將 trust 改成 password,就變成要使用密碼認證。