mysql - Drop Table if exists 语句给出错误

标签 mysql sql database

我在 MySql 中有以下代码块:

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;

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

ERROR 1103 (42000) at line 56: Incorrect table name 'account.info'

有什么问题吗?

请帮帮我。

最佳答案

来自 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 和其他人所示。

关于mysql - Drop Table if exists 语句给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21136048/

相关文章:

mysql选择前n个最大值

php - 何时在数据库列中使用逗号分隔值?

php mysql 使用子字符串的位置按字段值对结果进行排序

sql - “System.Guid”失败,因为具体化值为空。结果类型的泛型参数或查询必须使用可以为 null 的类型

mysql - 转置 MySQL 查询 - 需要将行转换为列

database - 一致性哈希中的不可用节点

database - 关系数据库建模的正确方法

mysql - 如何使用bareos备份mysql数据库?

mysql - 在没有临时表的情况下删除mysql中的重复条目

database - 暂存数据库良好实践