如何在 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,就變成要使用密碼認證。