[英]Ensure MySQL table charset & collation
情況:存在一個由應用程序A管理的表。應用程序A全天在表中插入和更新數據。 每周一次DROP
對該表進行重新創建,然后插入所有數據。
問題:應用程序A將表創建為utf8
。 依賴於此表的應用程序B要求它為ascii_bin
。 我既沒有設計應用程序,也沒有修改其要求的權限。
需要什么:一種確保表在ascii_bin
。 我考慮編寫腳本並通過CRON運行它,它將檢查當前字符集並在需要時進行設置。 有沒有更好的方法來實現這一目標?
由於ALTER
是導致隱式COMMIT
的語句之一,因此我認為不可能在INSERT
或UPDATE
之后將其作為觸發器的一部分來執行。
您可以將ascii_bin
設置為數據庫架構的默認字符集。 然后,所有創建的表在創建時都將具有此字符集,除非您明確指定另一個字符集。
有關如何設置默認字符集的信息,請參見MySQL文檔: http : //dev.mysql.com/doc/refman/5.0/en/charset-database.html
MySQL代理可能是這里的解決方案。
您可以在通過代理時重寫create語句。
另外,也許您可以從應用程序A中刪除特權,以便它不能刪除表。
基本上不做任何更改的ALTER語句。 因此,如果多次運行到ascii_bin的轉換,則在服務器上不會花費太多精力。 因此,將其放在cron中,或者由Applicatio B調用的現有存儲過程,或者其他更聰明的方法,都還不錯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.