Всем привет, продолжаю мудрить со CLI.
Делаю бекап БД через drush:
drush sql-dump --gzip > dbname.sql
также пробовал без сжатия:
drush sql-dump > dbname.sql
Все норм, в папке сайта создается файл БД.
Теперь пытаюсь восстановить БД из этого файла
drush sql-cli < dbname.sql
Не получается, пишет:
the input device is not a TTY
Почему не получается? Окружение Docker4Drupal + drupal-project (https://github.com/drupal-composer/drupal-project)
Комментарии
Вот каждый, абсолютно каждый на эти грабли наступает, а гуглить никто не хочет
docker-compose exec -T php drush sqlc < dump.sql
Гуглил - чето совсем не нашел.
Если база несжата - вышло. А если сжата через
drush sql-dump --gzip > dbname.sql
то при
docker-compose exec -T php drush sqlc < dbname.sql
выдает
Если делаешь дамп базы с ключом --gzip - то нужно указывать расширение файла .gz:
drush sql-dump --gzip > dbname.sql.gz
потом, перед заливкой дампа, его нужно предварительно раcпаковать:
gunzip dbname.sql.gz
и после этого - заливать дамп в базу:
drush sql-cli < dbname.sql
Предварительно распакавать - понял.
drush sql-cli < dbname.sql - не получается. cобственно ошибка в топике.
https://drushcommands.com/drush-9x/sql/sql:cli/ - тут в комментах пишут, что сейчас это "is this no longer possible"
а стандартные команды типа
mysql -u root -p drupal8db < ./baza_drup8.sql
не подходят?Подходят
Стандартные команды почему-то не работают.
На моем ПК
mysql -u vasyok -pqwerty12345 mydbname < dump.sql
пишет
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
На хостинге
mysqldump -u vasyok -pqwerty12345 mydbname > dump.sql
пишет
mysqldump: Got error: 1045: Access denied for user 'vasyok'@'localhost' (using password: YES) when trying to connect
docker-compose exec - да, это работает у меня на докере. Но на хостинг даже на знаю нужно ли докер ставить.
На твоем ПК конечно работать не будет, у тебя ведь mysql в контейнере
На хостинге явно ошибся с данными подключения к БД. Если сайт рабочий, то всё будет в settings.php написано
Да, ты прав. На хостинге я ошибся.
Мне осталось понять почему почему в 9м драше выпиляли возможность импорта БД.
Ее не выпилили. drush sqlc < dump.sql работает и в drush 10
Хмм. Действительно работает.
Понял в docker4drupal работает
с приставкой "docker-compose exec -T php". Если переносить БД т.обр. то есть ограничение на ее размер?
Да. Лучше таблицы с кэшем переносить без данных
Ну сброшу я кеш. А какое ограничение на размер?
Ну базу в несколько гигов у меня он импортировать не хотел
И что делать в таких случаях? Я раньше sypex dumper-ом пользовался. Но бекапы могут кривоватыми получаться. И RxB почему-то против таких методов
Заходить в контейнер mysql и через консоль импортировать дамп
ага, понятно, значит так ограничений на размер нет
mysql -u USER -pPASSWORD -f DATABASE < dump.sql
Теперь поборемся за место на диске
Создаем файл бекапа
drush sql-dump --gzip > dump.sql.gz
Распаковываем
gunzip dump.sql.gz
Пишет:
gzip: dump.sql.gz: invalid compressed data--format violated
Я конечно могу со cli запаковывать и распаковывать по другому, но чисто интересно почему не работает, когда сделано через sql-dump --gzip?
Я не запаковываю sql. Пакую sql вместе с файлами сайта. Меньше гемора.
Такая команда работает? gunzip -d baza_drup8.sql.gz
нет
gunzip -d dump.sql.gz
gzip: dump.sql.gz: invalid compressed data--format violated
у меня все работает. вы наверно в каком-то докере находитесь? на убунту 1804 все нормально.
$ drush sql-dump --gzip > dump.sql.gz
$ gunzip -d dump.sql.gz
$ ls
dump.sql
Возможно я путаюсь в понятиях, но Докер он же у меня в Убунту.
Вот так работает.
Запаковка:
tar -cvzf preprod.tar.gz preprod.sql
Распаковка:
tar -xvf preprod.tar.gz
А вот так нет:
drush sql-dump --gzip > dump.sql.gz - тут файл создается
gunzip -d dump.sql.gz пишет:
gzip: dump.sql.gz: invalid compressed data--crc error
gzip: dump.sql.gz: invalid compressed data--length error