0
誰かがアイデアを持ちましたが、なぜこのSQLがテーブルアカウントを作成する際にエラーを返しますか?テーブルの作成にInnoDBエラーが発生しました
1005 - テーブルを作成することはできませんが「mobilewaiter.accounts」(errnoに:150)
私が見た、その問題は、キーにインデックスを持つことができますが、すべてのものは、主キーの上に参照してください。 助けてください、ありがとう。
CREATE TABLE IF NOT EXISTS `tables` (
`_id` int(10) NOT NULL AUTO_INCREMENT,
`tag` varchar(40) COLLATE utf8_czech_ci NOT NULL,
`name` varchar(40) COLLATE utf8_czech_ci NOT NULL,
`occupied` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `users` (
`_id` int(10) NOT NULL AUTO_INCREMENT,
`nick` varchar(20) COLLATE utf8_czech_ci NOT NULL,
`password` varchar(40) COLLATE utf8_czech_ci NOT NULL,
`salt` varchar(20) COLLATE utf8_czech_ci NOT NULL,
`email` varchar(50) COLLATE utf8_czech_ci NOT NULL,
`firstname` varchar(20) COLLATE utf8_czech_ci NOT NULL,
`lastname` varchar(20) COLLATE utf8_czech_ci NOT NULL,
`role` varchar(20) COLLATE utf8_czech_ci NOT NULL,
PRIMARY KEY (`_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `accounts` (
`_id` int(10) NOT NULL AUTO_INCREMENT,
`table_id` varchar(10) COLLATE utf8_czech_ci NOT NULL,
`state` varchar(20) COLLATE utf8_czech_ci NOT NULL DEFAULT 'created',
`user_id` int(10) NOT NULL,
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`end_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`_id`),
FOREIGN KEY (`table_id`) REFERENCES `tables`(`_id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`user_id`) REFERENCES `users`(`_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;
外部キーを省略すると動作しますか? – Hajo
はい、問題はあります。しかし、私はそれが必要なので、私は知っている必要があります、正確にこのエラーの原因。また、別のテーブルを作成します。これはテーブルユーザーとの接続があり、そのテーブルはエラーなしで作成されます。 – Vaek
あなたは外部キーの他の名前を試しましたか?索引などと衝突する可能性があります。 – Hajo