Com base na minha pesquisa, eu diria que poderia ser uma coisa "você" e uma coisa "MySQL". Verifique suas definições de tabela com
SHOW CREATE TABLE table_name;
. Anote todos os campos definidos com NOT NULL
. O Manual de referência do MySQL 5.6:sintaxe 13.2.5 INSERT afirma:
Isso implicaria que não importa qual modo SQL você está usando. Se você estiver fazendo uma linha única
INSERT
(conforme seu código de exemplo) e inserindo um NULL
valor em uma coluna definida com NOT NULL
, não é suposto funcionar. Ao mesmo tempo, ironicamente, se você simplesmente omitir o valor da lista de valores, o manual do MySQL diz o seguinte, e o modo SQL importa nesse caso:
Assim, você não pode ganhar!;-) Brincando. A coisa a fazer é aceitar que
NOT NULL
em um campo de tabela MySQL realmente significa Não aceitarei um valor NULL para um campo enquanto estiver executando uma única linha INSERT
, independentemente do modo SQL .' Tudo o que foi dito, o seguinte do manual também é verdade:
Então, tenha coração. Defina seus padrões na lógica de negócios (objetos) e deixe a camada de dados seguir a direção disso. Padrões de banco de dados parecem uma boa ideia, mas se eles não existissem, você sentiria falta deles? Se uma árvore cair na floresta...