0

私のphpページの1つで、次のエラーが発生し続けます。

SQLSTATE [23000]: 整合性制約違反: 1062 キー 'PRIMARY' のエントリ '0' が重複しています

これがなぜ、どこで起こっているのかわかりません。それが、この質問を投稿している理由です。

このコードシーケンスのどこかで起こっていると思います。

// create user

$STH = $DBH -> prepare( "insert into users ( display_name, oauth_provider, oauth_uid ) values ( :value, :oauth_provider, :id )" );

$STH -> bindParam( ':value', $value, PDO::PARAM_STR, 255 );
$STH -> bindParam( ':id', $oauth_id, PDO::PARAM_STR, 255 );
$STH -> bindParam( ':oauth_provider', $oauth_provider, PDO::PARAM_STR, 255 );

$STH -> execute();

// get newly created user

$STH = $DBH -> prepare( "select * from users where oauth_uid = :id and ( display_name = :value or email = :value ) and oauth_provider = :oauth_provider" );

$STH -> bindParam( ':value', $value, PDO::PARAM_STR, 255 );
$STH -> bindParam( ':id', $oauth_id, PDO::PARAM_STR, 255 );
$STH -> bindParam( ':oauth_provider', $oauth_provider, PDO::PARAM_STR, 255 );

$STH -> execute();

$result = $STH -> fetch();

// create settings record with 0's

$STH = $DBH -> prepare( "insert into settings ( col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, user_id ) values ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, :id )" );

$STH -> bindParam( ':id', $result["id"], PDO::PARAM_INT, 4 );

$STH -> execute();

問題の原因となっている部分を特定するにはどうすればよいですか?

4

1 に答える 1

2

それはmysqlからのもので、コードとは関係ありません

主キーの列を削除し、auto_increment を 1 に再度変更し、

もう一度キーを追加します

于 2011-07-23T18:07:24.617 に答える