Не могу разобраться в чем проблема

mishanon

Новичок
Создал таблицу

CREATE TABLE t_book (id BIGINT AUTO_INCREMENT, seller_id BIGINT NOT NULL, status BIGINT, location_id BIGINT, name TEXT NOT NULL, second_name TEXT, author TEXT NOT NULL, place_publication TEXT, publishing_house TEXT, pages TEXT, format BIGINT, code_seller TEXT, photo TEXT, video TEXT, price BIGINT NOT NULL, count BIGINT DEFAULT 0, year BIGINT, cover BIGINT, condition_type BIGINT, condition_info TEXT, isbn TEXT, information LONGBLOB, date_add BIGINT, date_edit BIGINT, INDEX seller_id_idx (seller_id), INDEX location_id_idx (location_id), PRIMARY KEY(id)) ENGINE = INNODB;

где указал что поля name author и price не NULL

но этот код работает INSERT INTO t_book (count, date_add, seller_id, status) VALUES ('0', '', '1', '1')
то есть запись вставляется, и в name пусто. Я даже не не знаю куда копать :(
 

mishanon

Новичок
Каким образом указать что обязательны к заполнению поля name author и price ?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Ну, ты указал. Если ты попытаешься не заполнить эти поля, передав туда NULL или не передав значение вообще, произойдет ошибка.
 

mishanon

Новичок
Ну, ты указал. Если ты попытаешься не заполнить эти поля, передав туда NULL или не передав значение вообще, произойдет ошибка.
В том то и проблема
выполняю

INSERT INTO t_book (count, date_add, seller_id, status) VALUES ('0', '', '1', '1
и запись вставляется без каких либо ошибок! В чем может быть проблема?
 

mishanon

Новичок
хмм, интересно девки пляшуть. поставил денвер создал БД и эту таблицу. попробывал вставить запись. и PhpMyAdmin выдает что и ожидалось #1364 - Field 'name' doesn't have a default value. Только почему мой VDS сервер так не работает? разве можно так криво настроить сервер, что он даже не будет заикатся о таких нужных вещах как NULL,NOT NULL.
или там есть какие либо команды, что можно игнорировать синтаксис SQL?
 

baev

‹°°¬•
Команда форума

mishanon

Новичок
— да.
Вам выше уже писали: «Пустая строка — это не NULL».
Вы NULL пробовали вставить?


— это — совсем другое.
попробовал, пишет Column 'name' cannot be null. что и требуется. то есть предлагаете установить стандартное значение(default value) NULL?

проблема в том что этот(INSERT INTO t_book (count, date_add, seller_id, status) VALUES ('0', '', '1', '1')) SQL запрос формирует ORM Doctrine.
Так каким образом мне указать чтоб не создавалась запись, если я не указал name,price,author?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
проблема в том что этот(INSERT INTO t_book (count, date_add, seller_id, status) VALUES ('0', '', '1', '1')) SQL запрос формирует ORM Doctrine.
Так каким образом мне указать чтоб не создавалась запись, если я не указал name,price,author?
MySQL в общем случае считает себя умнее тебя. И если ты пропускаешь в запросе поля, вставляет в них какую-то х-ню, даже если для полей не указаны значения по умолчанию. В принципе, подобное угрёбищное поведение лечится какими-то настройками в районе strict_mode (собственно, поэтому на двух серверах у тебя работает по-разному), но не факт, что ты не напорешься ещё на какую-то область, в которой MySQL считает себя умнее.

Поэтому: желаешь предсказуемого поведения --- не пользуйся мысклем.
 
Сверху