2012-05-24 24 views
5

que estoy tratando de utilizar múltiples inserciones (en una declaración) y tengo esta estructura de la tablaPrevención de MySQL desde la inserción de valores por defecto implícitos en no columnas nulas

CREATE TABLE Scores 
(
    studentID varchar(50) not null, 
    score int 
) 
ENGINE = InnoDB 

Mi Pregunta:

INSERT INTO Scores Values 
('Barry', 45), 
(NULL, 41), 
('Jones', 53) 

Este declaración (que esperaba) debería fallar ya que la columna [StudentID] no acepta NULL. El problema era MySQL insert empty string ('') en la fila 2 ... y permitir que el resto continúe.

Respuesta

11

Edición:

SET SQL_MODE='STRICT_ALL_TABLES' 

o poner

SQL_MODE='STRICT_ALL_TABLES' 

bajo [mysqld] en my.cnf (reinicie MySQL).

+0

¿Qué pasa si no tengo ese privilegio en MySQL? ¿Es posible hacer eso desde mi PHP? Y también, la documentación de MySQL dice que cambiar SQL_MODE podría afectar otras partes de la base de datos (por ejemplo, Partición, Maestro + Esclavo ...) – codingbiz

+1

@tunmisefasipe: todos los usuarios tienen ese privilegio (para su sesión actual). Para hacerlo desde 'PHP', simplemente emita' mysql_query ("SET SQL_MODE = 'STRICT_ALL_TABLES'") 'o su análogo en la biblioteca que está utilizando. Sí, puede afectar otras partes de la base de datos. – Quassnoi

+0

Gracias @Quassnoi Voy a probar esto y ver cómo van las cosas – codingbiz

Cuestiones relacionadas