2017-01-24 2 views
0

私は& 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' 

これは、両方のテーブルが自動主キーをインクリメント持っているという事実にもかかわらず起こります。それの説明は何でしょうか?

+4

あなたは、両方のテーブルにプライマリキーが自動インクリメントされていると言いますが、あなたの 'users'テーブルには自動インクリメントがありません。 – treegarden

+0

最初のテーブルに自動インクリメントの問題を修正してもこの問題が解決しない場合は、質問を編集して新しいユーザーの登録に使用された一連のクエリを表示してください。 –

+0

'jQuery'でタグ付けされていますか? – urbz

答えて

2

usersテーブルのidテーブルがAUTO_INCREMENTに設定されていません。それが起こる理由です。

+0

愚かな私!ありがとうございました! :) –

関連する問題