powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Варнинги мешают вставки данных
13 сообщений из 13, страница 1 из 1
Варнинги мешают вставки данных
    #39440023
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
10.1.21-MariaDB-1~trusty


Код: sql
1.
select @@global.sql_mode


NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE TABLE `cart_item` (
	`cart_item_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`cart_id` INT(11) UNSIGNED NOT NULL,
	`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
	`product_offer_id` INT(11) UNSIGNED NOT NULL,
	`product_target_id` INT(11) UNSIGNED NULL DEFAULT NULL,
	`name` VARCHAR(128) NOT NULL,
	`quantity` INT(11) UNSIGNED NOT NULL,
	`value` FLOAT NULL DEFAULT NULL,
	`price` FLOAT UNSIGNED NOT NULL,
	`usd_equivalent` FLOAT UNSIGNED NOT NULL,
	`usd_equivalent_clean` FLOAT UNSIGNED NULL DEFAULT NULL,
	`product_offer_website_bonus_id` INT(11) UNSIGNED NULL DEFAULT NULL,
	`is_activated` ENUM('no','yes') NOT NULL DEFAULT 'no',
	`bonus_period_start` DATETIME NULL DEFAULT NULL,
	`price_rate` FLOAT UNSIGNED NULL DEFAULT NULL,
	`is_need_attestation` ENUM('yes','no') NOT NULL DEFAULT 'yes',
	PRIMARY KEY (`cart_item_id`),
	INDEX `fk_cart_item_cart` (`cart_id`),
	INDEX `fk_cart_item_product_offer` (`product_offer_id`),
	INDEX `fk_cart_item_product_bonus_website1` (`product_offer_website_bonus_id`),
	CONSTRAINT `cart_item_ibfk_1` FOREIGN KEY (`cart_id`) REFERENCES `cart` (`cart_id`) ON UPDATE NO ACTION ON DELETE CASCADE,
	CONSTRAINT `cart_item_ibfk_2` FOREIGN KEY (`product_offer_id`) REFERENCES `product_offer` (`product_offer_id`) ON UPDATE NO ACTION ON DELETE NO ACTION,
	CONSTRAINT `cart_item_ibfk_3` FOREIGN KEY (`product_offer_website_bonus_id`) REFERENCES `product_offer_website_bonus` (`product_offer_website_bonus_id`) ON UPDATE NO ACTION ON DELETE NO ACTION
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=24977
;



Пытаюсь вставить строку (все фореигны коректны):
Код: sql
1.
2.
INSERT INTO `cart`.`cart_item` (`CART_ITEM_ID`,`CART_ID`,`PRODUCT_OFFER_ID`,`PRODUCT_TARGET_ID`,`NAME`,          `PRICE`,    `PRICE_RATE`,`IS_NEED_ATTESTATION`) 
                        VALUES (NULL,          27080,    101,               0,                  'Tickets 10',   12.9,        1,            'yes')


Никаких ошибок, но вставленых строк 0. show warnings показывают что Field 'quantity' doesn't have a default value

Если и инсерт добавить quantity - То инсерт вставляеться. Т.е. получаеться что варнинг мешает вставиться данным.
Как можно настроить mysql чтобы он всеже вставлял данные даже с этими варнингами?
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440027
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренатполучаеться что варнинг мешает вставиться данным.Нет, данным мешает вставиться кривизна вставляемых данных или кривизна структуры. А что именно (первое, второе, или оба сразу) - зависит от бизнес-процесса.
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440034
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В качестве простейшего (но не факт что лучшего) решения могу предложить
Код: sql
1.
2.
3.
ALTER TABLE cart_item
    ALTER COLUMN quantity
        SET DEFAULT 0;
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440070
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

к сожалению на предыдушем mysql сервере при абсолютно такой же структуре таблиц и вставляемых данных - запись вставляеться и по умолчанию значение quantity выставляеться в 0 (хотя default значение не установлено).
существующая структура таблиц (и код который с ними работает) была очень давно спроектирована. И такихъ мест море. Это слишком нереально выяснять - где какие еще значение могут быть пропущены.
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440081
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренатна предыдушем mysql сервере при абсолютно такой же структуре таблиц и вставляемых данных - запись вставляеться и по умолчанию значение quantity выставляеться в 0 (хотя default значение не установлено).Это можно воспринять исключительно как басню. Либо имеется не обнаруженный Вами программный код, который выполняет присвоение нулевого значения при его отсутствии - клиентский код, триггер либо что-то ещё. А вот чудес - не бывает. И сервер никогда и ни при каких обстоятельствах не станет проявлять незапрошенной инициативы.
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440107
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

тригеры в первую очередь смотрел. Хоть они есть но очень простые и 100% не затрагивают эти поля.
авторЛибо имеется не обнаруженный Вами программный код
я дотрейсил до конечного sql запроса, и на нем уже тестирую.
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440112
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренатя дотрейсил до конечного sql запросаИ Вы хотите сказать, что на показанной структуре таблицы показанный текст запроса при выполнении его из консольного клиента "на предыдушем mysql сервере" выполняет вставку записи?
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440115
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

да именно так - вставляет.
причем не только для этой таблички но и для многих других.
я согласен что это неверно, но тем не менее это было так настроено на старом сервере.
чтобы устранить такие проблемы нужно время и силы которых к отправлены на другие задачи.
поэтому "настроить как было на предыдущем сервер" - единственный оставшийся вариант
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440137
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версию сервера озвучьте в таком случае... прямо цитатой с консоли. И простейший тест-кейс. Ну скажем так:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT @@version;
CREATE TABLE test (id int not null, val int not null);
INSERT INTO test (id) SELECT 1;
SHOW WARNINGS;
SELECT * FROM test;
DROP TABLE test;
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440151
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

да вы оказались правы.
проблема была в тригере

авторCREATE DEFINER=`develop`@`%` TRIGGER `cart_item_insert` BEFORE INSERT ON `cart_item` FOR EACH ROW BEGIN
SET new.usd_equivalent = new.price;
END

по какой то странной причине после него запись не вставляеться. после удаления тригера - все заработало. спс
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440621
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaРенатна предыдушем mysql сервере при абсолютно такой же структуре таблиц и вставляемых данных - запись вставляеться и по умолчанию значение quantity выставляеться в 0 (хотя default значение не установлено).Это можно воспринять исключительно как басню. Либо имеется не обнаруженный Вами программный код, который выполняет присвоение нулевого значения при его отсутствии - клиентский код, триггер либо что-то ещё. А вот чудес - не бывает. И сервер никогда и ни при каких обстоятельствах не станет проявлять незапрошенной инициативы.
Это mysql-то и без лишних инициатив?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
mysql> create table test (i int not null, val int not null);
Query OK, 0 rows affected (0.10 sec)

mysql> insert into test (i) values (1);
Query OK, 1 row affected, 1 warning (0.07 sec)

mysql> select * from test;
+---+-----+
| i | val |
+---+-----+
| 1 |   0 |
+---+-----+
1 row in set (0.00 sec)

mysql> select version();
+-----------------+
| version()       |
+-----------------+
| 5.5.54-0+deb8u1 |
+-----------------+
1 row in set (0.00 sec)


Дефолта нет, запись - есть. См. strict sql mode
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440654
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij , Strict mode по умолчанию включен. То есть выключить его можно только сознательным действием. А это уже трудно квалифицировать как "незапрошенную инициативу".
...
Рейтинг: 0 / 0
Варнинги мешают вставки данных
    #39440807
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

таки смотря о какой версии mysql говорим. Мне так помнится, что включен по дефолту он только в 5.7.
https://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html
мануалIncompatible change: In MySQL 5.7.5, these SQL mode changes were made:
Strict SQL mode for transactional storage engines (STRICT_TRANS_TABLES) is now enabled by default.
...
The changes to the default SQL mode result in a default sql_mode system variable value with these modes enabled: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ENGINE_SUBSTITUTION.
Для марии не пойду перепроверять.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Варнинги мешают вставки данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]