2007年1月12日 星期五

cakephp bug with PostgreSQL

由於日前將 MySQL 轉移至 PostgreSQL , 原本登入系統突然不能用了..
但是系統並沒有報錯誤, 就是沒有任何人能登入, 都是帳號不存在.... :(

由於使用 CakePHP 開發, 於是往 CakePHP 的方向一路追下去...
發現是 CakePHP 在產生 condition sql 上有問題conditionKeysToString(),
它直接利 php 的 is_numeric 來判斷 value 是否為數字來決定加入引號 (quote)與否,
而由於我們帳號欄位在 PostgreSQL 的 ColumnType = varchar ,
但使用者的帳號能使用如: 001,002,003 之類的純數字帳號.

CakePHP 產生出來的 Condition SQL 會是不含 ' quote 的, 這在 MySQL 會過, 在 PostgreSQL 也會過, 但是不會有任何 ResultSet 回來.. 所以沒有人能登入原系統 ... :(

已報到 cakephp 的 trac 中了.. 希望對有和我一樣發生的人有幫助.

#1927 (db_source.php conditionKeysToString() bug with PostgreSQL) - CakePHP : The Rapid Development Framework for PHP - Trac
張貼留言