Warum bekomme ich einen MySQL -Fehler 1062?
-
22-10-2019 - |
Frage
Auf einer meiner PHP -Seiten erhalte ich immer wieder den folgenden Fehler:
SQLState [23000]: Verstoß gegen Integritätsbeschränkung: 1062 Duplikateintrag '0' für Schlüssel 'Primär'
Ich weiß nicht warum oder wo dies geschieht. Das ist der Grund, warum ich diese Frage poste.
Ich denke, es passiert irgendwo in dieser Codesequenz.
// 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();
Wie finde ich heraus, welcher Teil das Problem verursacht?
Lösung
Es ist aus MySQL keine Beziehung zum Code
Lassen Sie die Spalte des Primärschlüssels -Alters auto_increment wieder auf 1 und wieder 1
Fügen Sie den Schlüssel erneut hinzu
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow