0

OK、これは本当に困惑しています。

Mac OS X (Lion) で MySQL 5.5.20 を使用しています。誰かが作業用の .MDB データベースをくれたので、それを MySQL に取り込みました。最初は問題ありません。

次に、データベース/テーブル/フィールドをクリーンアップしていました。すべてのテーブルに ID フィールドが必要でした。場合によっては存在しますが、IDと呼んでほしかったです。他の場合、そのようなフィールドはなかったので、作成しました。

CityList というテーブルがあります。私はそれを都市に改名しました。主キー フィールドの名前を CityList から ID に変更しました。

Venues という別のテーブルがあります。これには、VenuesID、VenueName、CityList の 3 つのフィールドがあります。CityList フィールドの名前を CityID に変更しました。

次に、VenuesID を ID にリネームしてみました。errorno:150 で失敗しました。 Sequel Pro を使ってみた、コマンドラインを使ってみた。何もない。

Venues テーブルの名前を別の名前に変更してみました。同じ結果: 150。

データベースを削除した後、データベースを再作成しようとしました。同じ結果: 150。

Venues テーブルを「Boxes」と呼ぶことで、構造とデータを正確にインポートすることができました。それに関する問題のささやきではありません。

だから、私は賢くなるだろうと思った。ボックステーブルを作成し、ボックスに挿入した最後のテーブルを含む、完全な構造とデータを SQL ステートメントにエクスポートしました。ファイルを編集して、すべての「Boxes」を「Venues」に変更し、データベースを再作成しました。

うまくいきましたが....「Venues」を「Venes」と間違えました。したがって、完全なデータベース構造とすべてのデータがそこにありました。テーブルの名前だけが間違っています。

名前を Venues に変更できません。

私は今、約1時間破壊して再試行しています。意味がない。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 に答える