sql >> Databasteknik >  >> RDS >> Mysql

Databasfel inträffade Felnummer:1062

Din UPDATE satsen ställer in id_publisher kolumnen till NULL , och baserat på namnet på kolumnen och felmeddelandet du får, att kolumnen är tabellens PRIMARY KEY med inställningen unsigned NOT NULL .

På grund av detta, när du gör id_publisher = NULL , MySQL konverterar den till id_publisher = 0 på grund av den unsigned del. Detta kommer att fungera bra första gången, men när du kör det på en andra rad kommer du nu att försöka infoga en andra primärnyckelvärdet 0 , vilket inte är tillåtet.

Baserat på platsen för die() uttalande i din exempelkod, jag antar att följande block är boven:

   $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);

Här, din $id_publis variabeln är antingen tom eller null.

Jag skulle föreslå att du antingen tar bort id_publisher = NULL del från UPDATE klausul som är så enkel som att ta bort 'id_publisher' => $id_publis, från $data1 array, eller ompröva anledningen till att du faktiskt behöver ställa in den till null till att börja med (i det här fallet skulle det vara mer fördelaktigt att ta bort raden?)




  1. Sanering vid lagring av serialiserad array

  2. Hur ändrar man teckenuppsättningen (och SAMMANSTÄLLNING) i en databas?

  3. Java PreparedStatement klagar på SQL-syntax på execute()

  4. Oracle-anslutningar brutna i SSIS efter avinstallation av 32-bitarsversionen av Oracle-klienten