SQLSTATE[23000]: Integrity constraint violation:
Résolu
kisscool73
Messages postés
79
Date d'inscription
Statut
Membre
Dernière intervention
-
kisscool73 Messages postés 79 Date d'inscription Statut Membre Dernière intervention -
kisscool73 Messages postés 79 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Ça fait plusieurs heures que je m'arrache les cheveux avec cette erreur.
J'ai cherché sur internet, beaucoup ont le même problème, mais ils semblent tous avoir ce problème dû à la conception de leur site.
En gros, dés que je me connecte sur mon site, j'ai ERROR 500 avec un detail :
Type: Exception
Message: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147483647' for key 'PRIMARY'
File: /home/baggysag/www/ow_core/database.php
Line: 707
Le truc c'est que mon site n'a pas bougé depuis plusieurs années et j'ai cette erreur depuis hier.
J'ai essayé de remplacer le fichier cité par celui d'une ancienne sauvegarde, mais ça ne change pas.
Et je ne peux pas avoir de doublons dans mes key 'PRIMARY', car elles sont toutes UNIQUE.
Et j'ai fais une recherche dans ma base SQL, j'ai aucune entrée "2147483647".
Si quelqu'un aurai une suggestion pour m'aider.
Ça fait plusieurs heures que je m'arrache les cheveux avec cette erreur.
J'ai cherché sur internet, beaucoup ont le même problème, mais ils semblent tous avoir ce problème dû à la conception de leur site.
En gros, dés que je me connecte sur mon site, j'ai ERROR 500 avec un detail :
Type: Exception
Message: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147483647' for key 'PRIMARY'
File: /home/baggysag/www/ow_core/database.php
Line: 707
Le truc c'est que mon site n'a pas bougé depuis plusieurs années et j'ai cette erreur depuis hier.
J'ai essayé de remplacer le fichier cité par celui d'une ancienne sauvegarde, mais ça ne change pas.
Et je ne peux pas avoir de doublons dans mes key 'PRIMARY', car elles sont toutes UNIQUE.
Et j'ai fais une recherche dans ma base SQL, j'ai aucune entrée "2147483647".
Si quelqu'un aurai une suggestion pour m'aider.
Configuration: Windows / Chrome 80.0.3987.163
A voir également:
- Nql 23000
- Nql.23000 - Meilleures réponses
- Sqlstate[23000]: - Meilleures réponses
- Erreur téléchargement netflix ✓ - Forum TV & Vidéo
- NETFLIX : Trop de vidéos ont été téléchargées sur vos appareils mais 0 vidéo ✓ - Forum TV & Vidéo
- Erreur ! SQLSTATE[23000]: Integrity constraint violation: 10 ✓ - Forum PHP
- SQLSTATE[23000]: Integrity constraint violation: 1048 ✓ - Forum PHP
- Erreur ERR_SSL_PROTOCOL_ERROR avec netflix - Forum Google Chrome
1 réponse
Bonjour,
Pour pouvoir te venir en aide il serait utile que tu nous partages le codes correspondant
Fichier : /home/baggysag/www/ow_core/database.php
Ligne : 707 ( affiches nous quelques lignes avant/apres histoire de voir à quoi sert cette ligne de code )
Ca permettra sûrement d'identifier la table concernée.... et la requête qui génère cette erreur.
Sûrement une requête INSERT qui essaye d'insérer une ligne dans la bdd avec un ID déjà existant.
Vu le message d'erreur, je suppose que ton code doit ressembler à ça
Il serait intéressante de faire un echo de la variable $sql
et également dans le foreach des params, faire un echo de $key et $value
Pour pouvoir te venir en aide il serait utile que tu nous partages le codes correspondant
Fichier : /home/baggysag/www/ow_core/database.php
Ligne : 707 ( affiches nous quelques lignes avant/apres histoire de voir à quoi sert cette ligne de code )
Ca permettra sûrement d'identifier la table concernée.... et la requête qui génère cette erreur.
Sûrement une requête INSERT qui essaye d'insérer une ligne dans la bdd avec un ID déjà existant.
Vu le message d'erreur, je suppose que ton code doit ressembler à ça
private function execute( $sql, array $params = null ) { if ( $this->isProfilerEnabled ) { $this->profiler->reset(); } /* @var $stmt PDOStatement */ $stmt = $this->connection->prepare($sql); if ( $params !== null ) { foreach ( $params as $key => $value ) { $paramType = PDO::PARAM_STR; if ( is_int($value) ) $paramType = PDO::PARAM_INT; elseif ( is_bool($value) ) $paramType = PDO::PARAM_BOOL; $stmt->bindValue(is_int($key) ? $key + 1 : $key, $value, $paramType); } } OW::getEventManager()->trigger(new OW_Event("core.sql.exec_query", array("sql" => $sql, "params" => $params))); $stmt->execute(); //TODO setup profiler $this->affectedRows = $stmt->rowCount(); if ( $this->isProfilerEnabled ) { $this->queryExecTime = $this->profiler->getTotalTime(); $this->totalQueryExecTime += $this->queryExecTime; $this->queryCount++; $this->queryLog[] = array('query' => $sql, 'execTime' => $this->queryExecTime, 'params' => $params); } return $stmt; }
Il serait intéressante de faire un echo de la variable $sql
et également dans le foreach des params, faire un echo de $key et $value
C'est exactement ça mon script à la ligne près lol.
Le problème, c'est que c'est une function qui retourne un résultat, je dois donc retourner les 3 valeur pour ensuite faire un echo sur la page qui doit récupérer cette valeur. Mais je ne sais pas d'où est lancé cette function.
Après vérification, j'ai le problème uniquement avec mon compte Admin, avec les comptes test, j'ai pas l'erreur.
Donc je suppose que il doit y avoir une des 3 key PRIMARY UNIQUE qui n'est pas unique dans ma table USER ?
Et qui dois donc soit avoir le même id, pseudo, ou mail que moi.
(ben non en faite, je viens de vérifier)