Как заставить PHPMyAdmin показывать предупреждения MySQL?

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

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

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

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

4 ответа

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

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

Когда я побежал 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 НЕ поддерживает отображение нескольких результатов из пользовательского запроса. Таким образом, это не работает как один 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;

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

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

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

Другие вопросы по тегам