Page 3 of 3

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 2:18 pm
by admin
Залил фикс под описание вашей проблемы. но было бы конечно хорошо протестировать его конкретно в вашей ситуации.

Re: Mysql пустой бекап

Posted: Tue Aug 31, 2021 10:25 am
by magicum
Спустя 7 лет проблема, как оказалось, такая же.

Потестить легко, повесьте коннект к mysql на локалхост в config.php
Попробуйте сделать бекап базы из админки смарта.
Бекап будет пустой. В мессаджах будет ошибка.

Re: Mysql пустой бекап

Posted: Tue Aug 31, 2021 1:26 pm
by admin
бекап делается как
exec(mysql -u ...) и тп

если бы проблема была глобальная - за 7 лет у кого-то еще она была бы, но судя по отсуствию сообщений какая-то проблема конкретно у вас

поэтому предлагаю начать не с меседжа "какой кривой скрипт за 7 лет не решили проблему", а с "как понять почему у меня бекап пустой"

Re: Mysql пустой бекап

Posted: Tue Aug 31, 2021 1:52 pm
by magicum
admin wrote: Tue Aug 31, 2021 1:26 pm бекап делается как
exec(mysql -u ...) и тп
Нет, он у вас делается совсем не так.

Если прописать коннект к базе через сокет в config.php, то сам смарт работает, но бекап не работает.
Если вернуть коннект к базе через localhost или 127.0.0.1, то бекап работает.

В обычных операциях смарт использует mysqli с разным набором параметров, в зависимости от того используется ли для подключения хост или сокет.

А бекап выполняется вызовом команды mysqldump, у которой параметры host и socket, это тоже два разных параметра, и тут я могу только догадываться, видимо в смарте не прописано отличие параметров mysqldump, в зависимости от того используется ли для подключения хост или сокет.

Раз за 7 лет больше никто про эту проблему не написал, то значит никто не коннектится к базе через сокет, а те кто коннектятся - забили на отсутствие бекапов в смарте и например делают эти бекапы сами.

Проверить ситуацию можно очень быстро - прописать сокет в config.php и запустить бекап базы вручную из админки.

Re: Mysql пустой бекап

Posted: Tue Aug 31, 2021 2:25 pm
by admin
ну вот и нашлось ))
оказалось что у вас сокет, а в команде дампа прописывается хост - поэтому дамп не делался
добавил в ап что б прописывало сокет для дампа

Re: Mysql пустой бекап

Posted: Tue Aug 31, 2021 3:19 pm
by magicum
Это всё замечательно, но вы 7 лет сказали то же самое )))

Спасибо

Re: Mysql пустой бекап

Posted: Tue Aug 31, 2021 3:21 pm
by admin
magicum wrote: Fri Oct 03, 2014 1:37 pm Полез экспериментировать. Нашел.

Надо просто сделать так:

$config["db_server"] = "localhost";

и прописать путь до сокета в my.cnf для всех мускульных товарищей: mysql, client, mysqld, mysqldump

и тогда вроде работает.

те такое работало раньше а сейчас перестало? или почему мы тогда решили оставить эту проблему?

Re: Mysql пустой бекап

Posted: Tue Aug 31, 2021 3:26 pm
by magicum
admin wrote: Tue Aug 31, 2021 3:21 pm те такое работало раньше а сейчас перестало? или почему мы тогда решили оставить эту проблему?
1. Я подумал что попустило, неверно истолковав мой прежний тест.
Я тогда поставил "localhost" вместо сокета и всё заработало, и я подумал, что смарт стал следовать секции [client] в my.cnf
Но я оказался неправ, как выяснилось недавно при фиксе mysql.php из db-modules

2. А потом у меня не стало ресурсов со смартами и вопрос отпал.

Re: Mysql пустой бекап

Posted: Tue Aug 31, 2021 3:30 pm
by admin
ясно
получилось что никто сокет не юзал - вопросов не возникало
возник вопрос - пофиксили)