2011-07-11 178 views
1

我在运行MySQL语句时出现语法错误。MySQL创建临时表语法错误

我知道反引号可以添加到表名,使其工作,但想知道为什么它首先发生。

Create temporary table 6514202534e1b20f0d6331 (user_id INT (10)) ENGINE=HEAP; 

如果我把这个MySQL查询浏览器,它把表名作为两个单独的词 - 6514202534e1b20f0d6331

表名是动态生成的,我之前没有遇到过这个问题,所以我想知道为什么它突然停止工作。

回答

2

我想这是因为服务器(mysql)在这种情况下理解为6514202534 * e^1 INT。

使用`字符:

CREATE TEMPORARY TABLE `6514202534e1b20f0d6331` (user_id INT (10)) ENGINE=HEAP; 

这样,MySQL服务器理解(明确的),整个短语的数据库,表或字段不是一个值或功能等

例如`订单'是合法的,而订单会导致无效订单条款出错。

+0

仔细阅读他的问题:“我知道反引号可以添加到表名,使其工作,但想知道为什么它首先发生。” – Dirk

+0

是的,我忘了它。 – Rolice

+1

感谢您的回答,'e1'的确是问题所在。错误可以通过使用反引号或用字母而不是数字开始表名来解决。 – ssin