【问题标题】:Can't create table. Stupid issue, simple query无法创建表。愚蠢的问题,简单的查询
【发布时间】:2014-10-01 23:48:37
【问题描述】:
CREATE TABLE `2m_aperturas_credito` (
  `idaperturacredito` int(10) NOT NULL AUTO_INCREMENT,
  `nombreapertura` varchar(100) NOT NULL,
  `activo` int(10) NOT NULL DEFAULT '1',
  PRIMARY KEY (`idaperturacredito`),
  KEY `idaperturacredito` (`idaperturacredito`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

这给了我一个错误:

[Err] 1005 - 无法创建表 'mydb.2m_aperturas_credito' (errno: -1)

这里有什么问题??

【问题讨论】:

  • Emm,可能是错误的数据库?您确定要将其放入“mydb”数据库吗?也将 AUTO_INCREMENT 修复为 0 或 1,不确定。我想你想从 1 开始计算数据库吧?
  • 我认为您不能以数字开头的表名,请参阅此线程:stackoverflow.com/questions/4200351/…
  • @Groben 该链接中的答案似乎与您所说的相矛盾。该链接也指向 sql server。
  • 会不会是约束问题?并且您确定该表尚不存在...?也许?
  • 没有矛盾:“当兼容级别为 100 时(根据 SQL Server Management Studio,它的意思是“SQL Server 2008”),名称必须以 Unicode 字母、_、@ , 或 #; 后跟一个或多个字母、数字、@、$、# 或 _。”它不能以数字开头。你在这里有更好的解释:stackoverflow.com/questions/15917064/…

标签: mysql innodb


【解决方案1】:

引用Reference manual: Schema Object Names:

建议不要使用以MeMeN 开头的名称,其中MN 是整数。例如,避免使用1e 作为标识符,因为1e+3 这样的表达式是不明确的。根据上下文,它可能被解释为表达式1e + 3 或数字1e+3

也就是说,作为一般规则,应避免在对象名称(数据库、表、列、过程、函数、变量等)的开头使用数字。尝试创建没有数字的表。

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多