Mysql在为脚本添加表时出错

Mysql在为脚本添加表时出错,mysql,database,apache,scripting,Mysql,Database,Apache,Scripting,Mysql错误(请不要笑) 我制作了一个脚本,为我的站点生成统计表。此脚本生成2000多个表,用于不同粒度的不同统计数据,如: 按年份划分的表格 白天的桌子 按用户列出的表格 按用户\代理列出的表 等等。。。(别问我为什么,它是由前一个所谓的架构师制作的——尽管他们的加载时间不到0.02秒) 因此,我更新了脚本以添加新表,但我犯了一个错误 我在表名中加了一个空格,现在无法删除它。因此,我试图用\来逃避它,但没有成功: root@summary:reports> drop table x

Mysql错误(请不要笑)

我制作了一个脚本,为我的站点生成统计表。此脚本生成2000多个表,用于不同粒度的不同统计数据,如:

  • 按年份划分的表格
  • 白天的桌子
  • 按用户列出的表格
  • 按用户\代理列出的表
等等。。。(别问我为什么,它是由前一个所谓的架构师制作的——尽管他们的加载时间不到0.02秒)

因此,我更新了脚本以添加新表,但我犯了一个错误

我在表名中加了一个空格,现在无法删除它。因此,我试图用\来逃避它,但没有成功:

root@summary: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

您必须使用`——这将把传递的字符串视为实际的表名,而不是要执行的一组命令

root@summary:reports> drop table `xd_2012_02_\ ua`;
这应该表明:

Query OK, 0 rows affected (0.00 sec)
我建议您不仅在这种情况下使用`,而且如果在列或表名中使用保留的MySQL单词,如
type
desc
(作为说明),也可以防止出现错误。这可能会让你以后不再头疼。虽然使用保留字符或特殊字符不是一种好的做法,但这只是我的习惯。

使用以下语法:

drop table \`xd_2012_02 ua\`;

这应该适用于空间

我会说,问一个新问题,这样你会得到更好的意见,而不仅仅是我的意见。关于脚本的快速问题:如果我创建一个proc会更好吗?还是php脚本很好?php脚本很好,易于在cronjobs中维护和调试