首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drop Table if exists语句出错

Drop Table if exists语句出错
EN

Stack Overflow用户
提问于 2014-01-15 19:20:32
回答 5查看 9.5K关注 0票数 4

我在MySql中有以下代码块:

代码语言:javascript
复制
DROP TABLE IF EXISTS `account.info`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `account.info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account_id` int(11) NOT NULL,
  `year_id` int(11) NOT NULL,
  `school_id` int(11) NOT NULL,
  PRIMARY KEY (`id`,`account_id`,`year_id`,`school_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7177 DEFAULT CHARSET=utf8;

它在第一行给我的错误是:

代码语言:javascript
复制
ERROR 1103 (42000) at line 56: Incorrect table name 'account.info'

这里面有什么问题呢?

请帮帮我。

EN

回答 5

Stack Overflow用户

发布于 2014-01-15 19:36:51

来自http://dev.mysql.com/doc/refman/5.1/en/identifiers.html:“在MySQL 5.1.6之前,数据库和表名称不能包含”/“、”\“、”.“或文件名中不允许的字符。”

这就是为什么我给出了这个答案:

不能在表名中使用圆点。点用于分隔数据库名称和表名(以及列名)。如果数据库名为account,表名为info,则可以尝试使用`account`.`info`。如果表名应该是account.info,则应该将其更改为其他名称,如account_info。我不同意其他一些答案:如果处理得当,引用不会有什么坏处。

从5.1.6开始,你可以随心所欲地使用,如@eggyal和其他人所示。

票数 5
EN

Stack Overflow用户

发布于 2014-01-15 19:27:03

Schema Object Names所述

在MySQL 5.1.6之前,数据库和表名称不能包含“/”、“\”、“.”或文件名中不允许的字符。

顺便说一下,您是否想要在一个名为account的数据库中创建一个名为info的表,然后请注意,如Identifier Qualifiers中所述

如果多部分名称的任何组成部分需要引用,请单独引用它们,而不是将名称作为一个整体引用。例如,编写`my-table`.`my-column`,而不是`my-table.my-column`

票数 3
EN

Stack Overflow用户

发布于 2014-01-15 19:26:39

试试这个:

代码语言:javascript
复制
DROP TABLE IF EXISTS account.info;

在使用点的时候不要使用`。

或同时引用db名称和表名。

代码语言:javascript
复制
DROP TABLE IF EXISTS `account`.`info`;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21136048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档