#到行尾防止自動產生SQL時的語義歧義。經典案例:
UPDATE account SET credit = credit - !payment!
若payment值為-1,自動產生的SQL變為:
UPDATE account SET credit = credit -- 1
若-- 1被解析為註釋,語句實際變為UPDATE account SET credit = credit,完全改變原意!MySQL 3.23.3+強制--後需有空白,使credit -- 1安全解析為credit - 1。
mysql命令列工具會自動刪除以--開頭的整行,避免腳本執行異常。
使用replace工具將--註釋轉為#:
# 轉換並管線執行
shell> replace " --" " #" < text-file-with-comments.sql | mysql db_name
# 直接修改檔案
shell> replace " --" " #" -- text-file-with-comments.sql
# 還原
shell> replace " #" " --" -- text-file-with-comments.sql
--註釋#或/* */風格/* */多行註釋,維護性最佳