私は& MySqlでCRUDアプリケーションを構築しています。これは、2つのテーブルを使用して、ユーザーとmedical_recordsと呼ば:プライマリキーが重複する理由
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`username` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(1024) NOT NULL,
`validation_code` text NOT NULL,
`active` tinyint(1) NOT NULL,
`telefon` varchar(255) DEFAULT NULL,
`oras` varchar(255) DEFAULT NULL,
`adresa` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE medical_records (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`fo` VARCHAR(255),
`condition` VARCHAR(255),
`transfer` VARCHAR(255),
`memo` text(1024),
`body_temperature` VARCHAR(255),
PRIMARY KEY (`id`),
CONSTRAINT FK_medical_records_1
FOREIGN KEY (user_id) REFERENCES users(id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
、これらの表の「ビジネスロジック」は次のとおりです。すべてのユーザは、1つ(のみ 1)医療記録を持っています。
ユーザーのテーブルがの場合にのみ、アプリケーションを使用してテストしました。登録とログインはうまく働いたなので、の問題のソースは、アプリケーションの(PHP)コードにはなりません。
後でユーザテーブルをドープし、アプリケーションが現在使用して2つの新鮮テーブル(ユーザとmedical_records)を加えました。このとき
私は第二のユーザを登録しようとするたびに、私はエラーを取得:
QUERY FAILED: Duplicate entry '0' for key 'PRIMARY'
これは、両方のテーブルが自動主キーをインクリメント持っているという事実にもかかわらず起こります。それの説明は何でしょうか?
あなたは、両方のテーブルにプライマリキーが自動インクリメントされていると言いますが、あなたの 'users'テーブルには自動インクリメントがありません。 – treegarden
最初のテーブルに自動インクリメントの問題を修正してもこの問題が解決しない場合は、質問を編集して新しいユーザーの登録に使用された一連のクエリを表示してください。 –
'jQuery'でタグ付けされていますか? – urbz