2010-10-31 74 views

回答

1

保留字列表在不同的MySQL版本之間發生變化,並且內置函數名稱是否也可用作原始模式名稱,具體取決於sql_mode(特別是IGNORE_SPACE,它在ANSI模式中設置)。

所以,如果你想要做的是測試的有效性潛在的架構名稱,不,你不能告訴一個架構名稱是否會明確與否,短期的實際連接到數據庫,試圖使用關鍵字來執行一些SQL。最好引用模式名稱以避免此問題。 (可惜的是,MySQL的模式名引號是反引號而不是ANSI標準的雙引號。同樣,這是ANSI sql_mode可以修復的東西。)

+0

感謝@boblince。我們可以檢查一個函數是否可調用(關於sql_mode)。 – Sadat 2010-10-31 03:35:54

+0

你想區分哪兩件事?一個函數關鍵字和一個非函數關鍵字?我想你可以通過測試,看看名字被接受爲正常的sql_mode架構名稱檢測功能,然後切換到'IGNORE_SPACE'模式並再次測試。如果結果不同,它必須是一個函數。儘管如此,我不認爲你可以用這個方法做很多有用的事情。 – bobince 2010-10-31 03:58:31

1

mysql中的內置函數列表不能用於編程。見this bug

同樣的協議關鍵字,但是有一個相當不錯的list of keywords與有關其推出的每關鍵詞的版本信息MySQL手冊。