postgresql安裝設定筆記

1.centos server安裝方法,參考以下連結

https://www.postgresql.org/download/linux/redhat/

2.遠端連線方法

如果連線client要安裝跟server一起,則此點可不用設定,就像是phpMyAdmin的使用方式

  • 打開及設定防火牆,增加一個firewall zone
  • 修改postgresql listen_address
  • 修改postgresql 客戶端憑證控制檔pg_hba.conf
nano /var/firewalld/zones/vpn.xml #內容如下
firewall-cmd --reload
firewall-cmd --list-all-zones
<zone>
<short>OpenVPN</short>
<description>OpenVPN network firewall</description>
<source address="10.8.0.0/24"/>
<service name="postgresql" />
</zone>
nano /var/lib/pgsql/11/data/postgresql.conf #內容如下
#修改要監控的ip,使用分號區格
listen_addresses='localhost,10.8.0.1'   
nano /var/lib/pgsql/11/data/pg_hba.conf
#增加授權連線的remote
host    all     all     10.8.0.0/24     md5
#重啟postgresql 11
systemctl restart postgresql-11
Read More

MySQL 使用RowNumber方式

Oracle及MS-SQL都有RowNumber的語法可用

MySQL則需要使用一些技巧

select x.id,x.val,x.seq, @i := @i + 1 as row_number 
from (
select 222 as seq,'row1' as id,'value1' as val from dual 
union all
select 111 as seq,'row2' as id,'value2' as val from dual 
) x,(select @i := 0) temp order by x.seq;

資料

QueryResult

加了Rownumber後

MySQL_RowNumber
如果只是要做分頁效果則使用

limit Start_Row,Page Of Row

limit 10,20

[JAVA]聯絡我們表單程式後台

前一篇介紹過聯絡我們的的前台程式,這篇會介紹如何取得前台聯絡表單所留言的內容,使用的網頁使用framework有jquery及easyui,利用datagrid來顯示所有的資料列,而重要的留言內容則顯示於iframe裡,如此可排除大部份的html tag產生的問題。

這程式目前缺少了幾個功能,並不影響使用,不過如果有需求的人倒可以自己加入使用:

  • 前台留言後自動發mail給某位管理者
  • 後台可回覆留言給使用者,寄送mail或電話聯絡後寫下聯絡事項

最主要是JavaMail的使用,及資料寫入資料庫的應用。

Read More

[PHP]自動取號(編碼)程式

使用php撰寫程式的人,最常使用的資料庫應該是MySQL,MySQL本身已經有提供自動取號的功能,不過在某些狀況上可能並不適用,而已也有些資料庫並沒有提供自動給號的功能的。

自動取號,主要用在key值的產生,可以得到唯一的編號,而這個編號是有一定規則的,像是(檔頭+年份+流水號)之類的,用來識別此筆資料,而產生這個編號有很多種方式,如:

  • 資料庫本身提供此功能,ex:mysql的Auto Increment
  • 利用一個Table存放目前編號,再使用stored procedure或是程資語言來取號
  • 其它…

之前有寫過一個Oracle Store procedure的取號程式,而這次提供利用php程式來取得編號,取號的原則有幾個來確保取號不會錯誤:

  1. 取號後,不管有無使用,則此編號已不會再產生
  2. 要使用transaction功能來取號及存入取到號碼(此範例並未用到交易)

這個範列的結果

Read More

c3p0 ConnectionPools設置與使用

c3p0是一個基於JNDI-bindable DataSources(使用DriverManager-based)的很容易使用的JDBC驅動函數庫。

所以在使用c3p0時,還需要一個JDBC的Driver,才能使用,而c3p0的作用只是控制Database的Connection使用,舉個簡單的例子,當Connection被DataBase Server timeout斷線後,c3p0會自動多次去重新連線,避免程式就直接丟出SQLException。

這次剛好遇到Microsoft SQL Server 2005不知為何一直丟出以下訊息,才去找到c3p0來使用的,發生的原因似乎是SQL Server本身對JDBC的Connection TimeOut斷線、或是Connection數不夠。

I/O Error: Connection reset
I/O Error: Software caused connection abort: recv failed

下面是一個範例,結果如下圖:

c3p0.png

Read More