Как заставить PHPMyAdmin показывать предупреждения MySQL? - PullRequest
4 голосов
/ 20 сентября 2008

Я использую PHPMyAdmi n для удобства обновления удаленной базы данных.

Но по умолчанию он не показывает предупреждения, что недавно привело меня к некоторой неловкой проблеме, когда я обновлял поле SET со строкой, отсутствующей в его списке, и не замечая проблему.

Я использую 2.11.9.1 (Dreamhost's default install).

В вики PHPMyAdmin он перечисляет «Отображать предупреждения» как функцию версии 2.9.0 и даже «Отображает все предупреждения» как функцию 2.10.2 - но как мне на самом деле включить это? Документация не велика.

Ответы [ 4 ]

1 голос
/ 08 марта 2012

Я просто искал то же самое.

Когда я запускал 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;
1 голос
/ 20 сентября 2008

Я не верю, что Dreamhost дает вам доступ к файлу конфигурации для их установки phpMyAdmin. Однако вы можете легко выполнить собственную установку phpMyAdmin, загрузив исходный код с их веб-сайта и просто распаковав его в каталог, к которому хотите получить доступ (например, your-domain.com/phpma). Затем следуйте инструкциям на веб-сайте для редактирования файла конфигурации (который должен включать такие предупреждения, как вы просили).

0 голосов
/ 20 сентября 2008

следуйте инструкциям на сайте для редактирование вашего конфигурационного файла (который должен включить включающие предупреждения, как вы спросил).

Ну да, так и должно быть. Но я не вижу его в файле конфигурации и не вижу на странице, на которую вы ссылаетесь. Я уже искал информацию в очевидных местах, поверьте мне.

0 голосов
/ 20 сентября 2008

Я могу ошибаться, но если я правильно помню, вам нужен доступ к файлу конфигурации phpMyAdmin, чтобы включить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...