MySQL无法创建/重命名表和/或变量

时间:2012-04-29 10:13:02

标签: mysql

好的,这真令人困惑。

我在Mac OS X(Lion)上使用MySQL 5.5.20。有人给了我一个.MDB数据库,所以我把它带到MySQL。最初没问题。

然后我正在清理数据库/表格/字段。我希望所有表都有一个ID字段。在某些情况下,它们存在,但我希望它们被称为ID。在其他情况下,没有这样的领域,所以我创建了一个。

有一个名为CityList的表。我把它改名为城市。我将CityList中的主键字段重命名为ID。

另一张名为Venues的桌子。它有三个字段VenuesID,VenueName和CityList。我将CityList字段重命名为CityID。

然后,我尝试将VenuesID重命名为ID。它失败了errorno:150。我尝试使用Sequel Pro,我尝试使用命令行。什么都没有。

我尝试将Venues表重命名为其他内容。相同的结果:150。

我尝试删除它后重新创建数据库。相同的结果:150。

我可以通过调用Venues表“Boxes”来导入完全结构和数据。不是那个问题的耳语。

所以,我以为我会很聪明。我将完整的结构和数据导出到SQL语句中,包括CREATEd Boxes表和INSERTed INTO Boxes的最后一个表。我编辑了文件,将所有“Boxes”更改为“Venues”并重新创建数据库。

它奏效了,但是......我把“场地”错误地称为“Venes”。所以完整的数据库结构就在那里和所有数据。只是桌子的名字是错的。

我无法将其重命名为Venues。

我现在已经摧毁并重试了大约一个小时。这没有道理。感觉就像某个地方在MySQL中仍有一些记录,场地表1)仍然存在,2)不能改变。

任何建议?

P上。 S.我要创建的代码是:

CREATE TABLE `Locations` (
  `VenuesID` int(11) NOT NULL,
  `CityID` int(11) DEFAULT NULL,
  `VenueName` varchar(50) CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`VenuesID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

不,没有外键约束。

1 个答案:

答案 0 :(得分:0)

升级到答案

其他一些表受到引用您尝试更改的列的外键的约束。

您可以通过查询INFORMATION_SCHEMA

来查看数据库中的所有外键约束
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'

输出中的TABLE_NAME列表示已定义约束的表。您还可以在SHOW CREATE TABLE [TABLE_NAME]的输出中或在该表的Sequel Pro的“关系”选项卡中查看约束(请注意,“关系”选项卡仅显示在当前表上定义的外键约束,引用当前表的那些:因此,您将不得不检查数据库中每个表的“关系”选项卡,以查找引用相关列的任何内容...)。