- 更新資料後可能會因 query cache 而取到舊資料, 執行 "reset query cache" 可解決這問題。保險起見, 用 "flush tables with read lock; unlock tables;" 更穩。
- 可能會找不到新加的欄位, 原因可能是 INFORMATION_SCHEMA 沒有更新, 文件第一頁就說這個 database 是唯讀的, 不能更新。可以用 "flush tables with read lock; unlock tables;" 可解決 (強迫關掉所有 table, 下次用時就會重讀硬碟了)。
另一種可怕的錯誤是, 不小心在 mysql 目錄下放了不對的檔案, 比方說 rsync 時不小心少打 "/", 變成在 database 目錄下放另一個目錄, 而不是放入 MySQL 的檔案 (如 *.frm, *.MYD, *.MYI)。這種情況下做任何 SQL 都會有 warning, 有些 framework / lib 會在發現 warning 時直接丟 exception 出來, 結果就是其它程式跑出不知所云的錯誤訊息, 很難除錯。
2010-11-16 更新
今天中另一個雷, MEMORY engine 在硬碟上只有 frm 檔用來存 schema, 資料和 index 都在記憶體裡, 別傻傻的 rsync db1 到 db2 後, 就以為兩個資料庫內容一模一樣啊。
2010-11-22 更新
《High performance MySQL 2e》p146 "Speeding up alter table" 提到不少非正規更新檔案的方法, 可以學到一些小技巧, 對於自己開發用的資料庫來說, 頗實用的。
2010-11-16 更新
今天中另一個雷, MEMORY engine 在硬碟上只有 frm 檔用來存 schema, 資料和 index 都在記憶體裡, 別傻傻的 rsync db1 到 db2 後, 就以為兩個資料庫內容一模一樣啊。
2010-11-22 更新
《High performance MySQL 2e》p146 "Speeding up alter table" 提到不少非正規更新檔案的方法, 可以學到一些小技巧, 對於自己開發用的資料庫來說, 頗實用的。
沒有留言:
張貼留言