Как заставить PHPMyAdmin показывать предупреждения MySQL?
Я использую PHPMyAdmi
n для удобства обновления удаленной базы данных.
Но по умолчанию он не отображает предупреждения, что недавно привело меня к некоторой неловкой проблеме, когда я обновлял поле 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, чтобы включить его.
следуйте инструкциям на сайте для редактирования вашего конфигурационного файла (который должен включать в себя включение предупреждений, как вы просили).
Ну да, так и должно быть. Но я не вижу его в файле конфигурации и не вижу на странице, на которую вы ссылаетесь. Я уже искал информацию в очевидных местах, поверьте мне.