sql >> Database teknologi >  >> RDS >> Mysql

Opstået databasefejl Fejlnummer:1062

Din UPDATE klausulen indstiller id_publisher kolonne til NULL , og baseret på navnet på kolonnen og den fejl, du modtager, at kolonne er tabellens PRIMARY KEY med en indstilling på unsigned NOT NULL .

På grund af dette, når du gør id_publisher = NULL , MySQL konverterer det til id_publisher = 0 på grund af den unsigned en del. Dette vil fungere fint første gang, men når du kører det på en anden række, vil du nu forsøge at indsætte et sekund primærnøgleværdien 0 , hvilket ikke er tilladt.

Baseret på placeringen af ​​die() sætning i din eksempelkode, antager jeg, at følgende blok er synderen:

   $data1 = array(
    'id_publisher' => $id_publis,
    'publisher' => $publis,
    'artis' => $ar,
    'id_label' => $id_lab);

    $this->db->where('id_publisher', $this->input->post('id'), $data);
    $this->db->update("t_publisher",$data1);

Her er din $id_publis variabel er enten tom eller null.

Jeg vil foreslå enten at fjerne id_publisher = NULL del fra UPDATE klausul, som er så simpel som at fjerne 'id_publisher' => $id_publis, fra $data1 array, eller genovervej årsagen til, at du faktisk skal indstille den til null til at begynde med (vil det i dette tilfælde være mere fordelagtigt at slette rækken?)




  1. Gendannelse af SQL Editor-filer (forespørgsler, procedurer) efter tudse for Oracle-nedbrud eller hængende

  2. Forsøger at importere FoxPro DBF-fil til SQL Server

  3. MySQL-adfærd for ON DUPLICATE KEY UPDATE for flere UNIKKE felter

  4. Hvad sker der, når jeg opbruger en bigint-genereret nøgle? Hvordan håndteres det?