2012-03-03 2 views
4

Mysql ошибки (не смеется пожалуйста)Mysql ошибка при добавлении таблицы поэтому сценарию

Я сделал скрипт, который генерирует таблицу статистики для моего сайта. Этот скрипт генерирует более 2000 таблиц, которые используются для данных различной статистики с различной степенью детализацией, как:

  • таблицы по годам
  • столов в день
  • таблицы пользователей
  • таблицы по USER_AGENT

и т. Д. (Не спрашивайте меня, почему это было сделано предыдущим так называемым архитектором, - они заработали менее чем за 0,02 секунды)

Поэтому я обновил сценарий, чтобы добавить новые таблицы, но сделал ошибку.

Я поместил пробел в имя таблицы, и теперь я не могу его удалить. поэтому я пытаюсь поставить \, чтобы избежать его, но не успеха:

[email protected]:reports> drop table xd_2012_02_\ ua; 
ERROR: 
Unknown command '\ '. 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\ ua' at line 1 

ответ

8

Вы должны использовать ` - Это будет рассматривать строку, переданную в качестве фактического имени таблицы, а не кучу команд, которые вы хотите выполнить.

[email protected]:reports> drop table `xd_2012_02_\ ua`; 

Это должно показать:

Query OK, 0 rows affected (0.00 sec) 

Я бы рекомендовал использовать ` не только для этого случая, но и то, что позволит предотвратить ошибки при использовании зарезервированных слов MySQL как type или desc (как описание) для столбцов или имен таблиц. Это может спасти вам головную боль позже. Хотя использование зарезервированных или специальных символов не является хорошей практикой, но это только я.

+0

он работает, спасибо. –

+0

никаких проблем, вы приветствуете –

+0

, кстати, вы думаете, что эта «архитектура» - хороший дизайн? –

0

использовать этот синтаксис:

drop table \`xd_2012_02 ua\`; 

это должно работать с пространством

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