What have you found for these years?

2007-08-08

總算弄起來 PostgreSQL 了

在 windows 上就白痴地安裝就能用了,甚至比 MySQL 還簡單。
mysql 實在是有太多怪怪的問題了,我個人實在不推薦,除非必要,
否則用 postgre-sql 應該是好得多。mysql 就我現在能想到的問題:
1. mysql socket, 真的是有夠煩的東西。
2. password algorithm changed, 那個 old_password 實在是﹍。

當然,我跟 database 不熟,其他的都只是隱隱約約聽過的說法,而上面那個
password 的問題,可能是 php 造成的,這不能怪 mysql 也說不定。
但反正用 postgre-sql 也沒什麼壞處吧?真不懂為什麼到處都在用 mysql.

用 macports 安裝:
sudo port install postgresql82
sudo port install postgresql82-server

接下來是 setup:
sudo mkdir -p /opt/local/var/db/postgresql82/defaultdb
sudo chown postgres:postgres /opt/local/var/db/postgresql82/defaultdb
sudo su postgres -c '/opt/local/lib/postgresql82/bin/initdb -D /opt/local/var/db/postgresql82/defaultdb'

這三行是 macports 指示的,初始化一個 database, 原因我不知道是什麼 XD
關於第三行,我昨天一直碰到一個問題,說什麼跟 KDC 有關的,我猜是
key distribution center, 我不知道要怎麼搞這個東西。
結果就是認證一直失敗,可以初始化 database, 但是

sudo -u postgres /opt/local/lib/postgresql82/bin/postgres -D /opt/local/var/db/postgresql82/defaultdb

不管怎麼樣都會失敗,一直在那邊 Sorry! Sorry! 的,有夠討厭。
然後我就試著改 postgres 的密碼,結果改到我的 mac os x login window
出現 postgres... 害我很不爽,google 半天好像沒有隱藏的好方法。
所以我就乾脆整個砍掉重練。

中間 google KDC 的錯誤,只能找到一筆日文的 blog, 看半天後我發現他有個
明確的指示,就是卸載 heimdal, 這真是個該死的東西啊!安裝 gnome 需要他,
但是我記得他已經好幾次讓我的安裝與配置的動作碰到很多次麻煩了。於是:

sudo port deactivate heimdal
(不能 uninstall, 因為 gnome 需要他﹍我有預感搞不好還是得弄 KDC)

接下來進行 su 時,就不會有那個 KDC 錯誤了。只是卻會出現另一個錯誤,什麼
cannot execute binary 什麼的,我忘記了,現在沒這個錯誤我沒辦法 copy XD
反正就是試了老半天都是不行,乾脆砍掉重練,這次不要啟動 heimdal 搞不好就行了。

不過在執行第三個指令:

sudo su postgres -c '/opt/local/lib/postgresql82/bin/initdb -D /opt/local/var/db/postgresql82/defaultdb'

又出現問題了。昨天明明就是很輕鬆地初始化 database, max_connections 是 30
但是今天 max_connections 只能有 10 ???
然後就噴 shared memory 不足的錯誤出來,叫我把 max_connections 降低。
看了半天,明明他的 request 才 1.6 MB 左右,這樣要降低會不會太扯了?
所以我不信他 XD

google 了半天,每個人都說要把:
kern.sysv.shmmax
調大一點。可是我不能接受,明明昨天就可以,哪有今天就不行的道理。
又試了半天,還有 google 了半天,還是找不到什麼有用的資訊,於是我決定﹍
還是把他調大好了,反正也沒差吧?我 real memory 可是有 3G 的(挺)

sudo nano /etc/rc
ctrl+w 找 kern.sysv.shmmax, 後看到:
kern.sysv.shmmax=4194304
好好,變大一倍吧!(十倍可能太誇張了)
kern.sysv.shmmax=8388608

據說這需要 reboot, 測試了一下還是不能初始化 database 後,我就 reboot 了。

sudo su postgres -c '/opt/local/lib/postgresql82/bin/initdb -D /opt/local/var/db/postgresql82/defaultdb'

過了!這次 max_connections 又回到 30 了。看來也許是我今天 shared
memory 用得比較兇的關係??天知道是什麼原因。

sudo -u postgres /opt/local/lib/postgresql82/bin/postgres -D /opt/local/var/db/postgresql82/defaultdb

成功啟動了!!雖然說他沒辦法背景執行,變成我 iTerm 要卡一個 tab 在那 XD
不過我想沒差,反正一定有辦法解決這個問題,也許就是 initdb 所說的第二行:

sudo -u postgres /opt/local/lib/postgresql82/bin/pg_ctl -D /opt/local/var/db/postgresql82/defaultdb -l logfile start 吧。

接著打開 pgAdmin3 看看,也成功連上 database 了!
http://www.pgadmin.org/
這個很好用啊,我覺得我還是需要 gui tool, cli 我不是很習慣。

還有 mysql gui tool
http://dev.mysql.com/downloads/gui-tools/5.0.html
我覺得用這個是比 phpMyAdmin 好啦﹍﹍。雖然說 phpMyAdmin 真的很好用,
但是總覺得很容易碰到問題,像是編碼問題,需要 hack 一下才能正常使用 utf8.
dump 與 restore 也是,不要透過 web 會是比較好的選擇。

接下來當然是要測試 Rails !

sudo gem install ruby-postgres

打開 database.yml:

development:
  adapter: postgresql
  database: depot_development
  username: postgres
  password:

rake db:migrate

回到 pgAdmin3 看看,成功了!!
放棄 MySQL 使用 PostgreSQL 吧!! XD

2007.08.08

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0