Twoja UPDATE
klauzula ustawia id_publisher
kolumna na NULL
, a na podstawie nazwy kolumny i wyświetlanego błędu że kolumna to PRIMARY KEY
tabeli z ustawieniem unsigned NOT NULL
.
Z tego powodu, gdy robisz id_publisher = NULL
, MySQL konwertuje go na id_publisher = 0
ze względu na unsigned
część. Za pierwszym razem zadziała to dobrze, jednak po uruchomieniu w drugim wierszu będziesz teraz próbował wstawić sekundę wartość klucza podstawowego 0
, co jest niedozwolone.
Na podstawie lokalizacji die()
w przykładowym kodzie, zakładam, że winowajcą jest następujący blok:
$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);
Tutaj Twój $id_publis
zmienna jest pusta lub null.
Proponuję albo usunąć id_publisher = NULL
fragment z UPDATE
klauzula, która jest tak prosta jak usunięcie 'id_publisher' => $id_publis,
z $data1
tablicę lub przemyśl powód, dla którego faktycznie musisz ustawić ją na null
na początek (czy w takim przypadku usunięcie wiersza byłoby korzystniejsze?)