Я просто искал то же самое.
Когда я запускал INSERTs
, используя стандартную форму phpMyAdmin 'insert', строки вставлялись, но появлялась красная полоса с указанием любых предупреждений. Но когда я выполнял массовую вставку , предупреждения не появлялись, а вместо этого появлялась зеленая полоса, просто указывающая количество затронутых строк (создавая впечатление, что все прошло успешно, хотя на самом деле это может не иметь ).
Я обнаружил, что должен был отправить команду SHOW WARNINGS
вручную. Например, при выполнении этого запроса я помещаю оба оператора в поле SQL phpMyAdmin.
INSERT INTO test2 SELECT * FROM test1;
SHOW WARNINGS;
Это дало список предупреждений, подобных следующему ...
Level Code Message
Warning 1265 Data truncated for column 'a' at row 1
Warning 1265 Data truncated for column 'a' at row 3
Warning 1265 Data truncated for column 'b' at row 3
Warning 1366 Incorrect integer value: 'x' for column 'b' at row...
На заметку:
- Вы не можете запустить команду
SHOW WARNINGS
позже, она будет выглядеть пустой. Он должен быть в поле с вашим первоначальным запросом, когда вы нажимаете «Перейти». Это связано с тем, что MySQL содержит только предупреждения для последнего выполненного вами запроса. Каждый раз, когда вы нажимаете на ссылку или кнопку, phpMyAdmin выполняет все другие запросы к БД, поэтому ваши предыдущие предупреждения теряются.
phpMyAdmin NOT поддерживает отображение нескольких результатов из пользовательского запроса. Таким образом, выполнение одного сценария SQL НЕ работает ... (с версии 3.4.10.1)
INSERT INTO test2 VALUES ('my text', 'something else');
SHOW WARNINGS; # you won't see the warnings from here
INSERT INTO test2 VALUES ('my text', 'something else');
SHOW WARNINGS;
Хотя описанный выше метод не будет работать в phpMyAdmin, он ДОЛЖЕН нормально работать в клиенте командной строки MySQL. Так что используйте это, если вам нужно.
Если у вас есть несколько вставок и вы хотите показать все предупреждения, вы должны объединить их в цепочку как один оператор INSERT
. Например:
INSERT INTO test2 VALUES
('my text', 'something else'),
('my text', 'something else');
SHOW WARNINGS;