Как помирить Mysqldump и PhpMyAdmin?

Люди пишут, что если dump баз делать через Phpmyadmin, база, тем более большого объема, может скопироваться не полностью, поэтому, наверное, ДАМП лучше делать через консоль.

Но возникла следующая проблема при создании копий баз данных:
Если делать копию базы посредством консоли через команду:

mysqldump -uroot -p -B base > base.sql

то копия образуется в каталоге root, потом мы ее импортируем через phpmyadmin, при этом, ошибок никаких не возникает, но мы видим вот это «Таблиц в базе данных не обнаружено». Почему так?

Если, например, базу экспортировать из Phpmyadmin, а потом ее туда же импортировать, тогда получается все удачно.

Понятно, что копии баз данных, сделанные в одном и другом случае, имеют какие-то разные форматы, и они, судя по всему, несовместимы друг с другом.

Так же через консоль можно посмотреть список таблиц базы:

mysqlshow -uUSER -pPASSWORD base

Через консоль видим, что таблицы в базе есть, а в PhpMyAdmin мы таблиц не видим!

Вопрос следующий:
Как совместить формат баз из phpmyadmin и mysqldump, чтобы работа была корректной?

Выполним тогда следующие действия:
Например, имеем произвольного пользователя user_base с одноименным названием БД user_base. Сделаем дамп этой базы двумя способами – через консоль и через phpmyadmin, через консоль такая команда:

mysqldump -uroot -p -B user_base > user_base.sql
После чего сравним два варианта полученных копий баз, и что нас сразу смущает в базе, полученной из консоли, — после строки:

— CREATE DATABASE /*!32312 IF NOT EXISTS*/ `user_base` /*!40100 DEFAULT CHARACTER SET cp1251 */;

следует вот такой фрагмент:

USE `user_base`;

Данный фрагмент отсутствует в базе, которую мы задамили через phpmyadmin, поэтому пробуем этот кусок в консольной базе заменить на такой вариант:

— USE `user_base`;

Теперь в PhpMyAdmin все корректно отображается!

Понравилась статья? Поделиться с друзьями:
Помощь вебмастеру