Tu UPDATE
la cláusula está configurando el id_publisher
columna a NULL
y, según el nombre de la columna y el error que recibe, eso la columna es la PRIMARY KEY
de la tabla con una configuración de unsigned NOT NULL
.
Debido a esto, cuando haces id_publisher = NULL
, MySQL lo convierte a id_publisher = 0
debido al unsigned
parte. Esto se ejecutará bien la primera vez, sin embargo, cuando lo ejecute en una segunda fila, ahora intentará insertar un segundo valor de clave principal de 0
, que no está permitido.
Basado en la ubicación del die()
declaración en su código de muestra, asumo que el siguiente bloque es el culpable:
$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);
Aquí, su $id_publis
la variable está vacía o es nula.
Sugeriría eliminar el id_publisher = NULL
parte de la UPDATE
cláusula que es tan simple como eliminar 'id_publisher' => $id_publis,
de $data1
matriz, o reconsidere la razón por la que realmente necesita establecerlo en null
para empezar (en este caso, ¿sería más beneficioso eliminar la fila?)