多くの人がすでにこの問題を抱えていましたが、他の投稿には適切な解決策がありませんでした.
「sales」という名前のテーブルと「host_flags」という名前のテーブルが 2 つあります。host_flags.sales_id から sales.id への外部キーが必要ですが、mysql では許可されません。各テーブルにプライマリ インデックスが定義されているので、なぜだろう...
host_flags テーブルには既に host_id 列に外部キーがありますが、最初に sales id の外部キーを作成しようとしても、できませんでした。
テーブルは次のようになります。
CREATE TABLE `sales` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`creation` datetime DEFAULT NULL,
`lastupdate` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
CREATE TABLE `host_flags` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`host_id` int(11) DEFAULT NULL,
`sales_id` int(11) DEFAULT NULL,
`creation` datetime DEFAULT NULL,
`lastupdate` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `host_id6` (`host_id`),
CONSTRAINT `host_id6` FOREIGN KEY (`host_id`) REFERENCES `hosts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `hosts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`creation` datetime NOT NULL,
`lastupdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=32225 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
次のエラー メッセージが表示されます。
MySQL said: Can't create table 'primarydata.#sql-191_1' (errno: 150)
ありがとう!
チャールズ
解決策が見つかりました
プライマリ インデックスのすべての int は、符号付きまたは符号なしのいずれかである必要があります。混合ではありません。