2010-10-31 4 views

ответ

1

Список зарезервированных слов изменяется между различными версиями MySQL, а также могут ли использоваться имена встроенных функций в качестве имен исходных схем, в зависимости от sql_mode (в частности, IGNORE_SPACE, который установлен в режиме ANSI).

Итак, если вы пытаетесь проверить потенциальное имя схемы на достоверность, нет: вы не можете определить, будет ли имя схемы чистым или нет, кроме фактического подключения к базе данных и пытаясь выполнить некоторый SQL, используя соответствующее ключевое слово. Лучше цитировать имена схем, чтобы избежать проблемы. (Жаль, что котировки имен схемы MySQL являются обратными записями вместо двойных кавычек стандарта ANSI. Опять же, это может быть исправлено с помощью ANSI sql_mode.)

+0

Спасибо @boblince. Можем ли мы проверить, является ли функция вызываемой или нет (в отношении sql_mode). – Sadat

+0

Какие две вещи вы пытаетесь отличить? Ключевое слово функции и ключевое слово non-function? Я думаю, вы могли бы обнаружить функции путем тестирования, чтобы узнать, было ли имя принято как имя схемы в обычном sql_mode, затем переключитесь в режим IGNORE_SPACE и снова проверьте. Если результаты разные, это должно быть функцией. Я не думаю, что есть много полезного, что вы могли бы сделать с этим. – bobince

1

Список встроенных функций в mysql недоступен программно , См. this bug.

То же самое касается ключевых слов, однако в руководстве mysql есть довольно приятный list of keywords с информацией о версии, в которой было введено каждое ключевое слово.

Смежные вопросы