0

好吧,这真的让我很困惑。

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

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

有一个名为 CityList 的表。我将其重命名为城市。我将主键字段从 CityList 重命名为 ID。

还有一张叫做场地的桌子。它具有三个字段 VenuesID、VenueName 和 CityList。我将 CityList 字段重命名为 CityID。

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

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

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

通过调用 Venues 表“Boxes”,我能够准确地导入结构和数据。这不是一个问题的耳语。

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

它有效,但是....我将“Venues”错误地输入为“Venes”。所以完整的数据库结构和所有数据都在那里。只是表的名称是错误的。

我无法将其重命名为场地。

我已经销毁并重试了大约一个小时。这没有道理。感觉就像在 MySQL 中的某个地方仍有一些记录,即 Venues 表 1) 仍然存在并且 2) 无法更改。

有什么建议吗?

PS我要创建的代码是:

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;

不,没有外键约束。

4

1 回答 1

0

升级到答案

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

您可以通过查询来查看数据库中的所有外键约束INFORMATION_SCHEMA

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'

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

于 2012-04-29T12:04:21.097 回答