Импортирование дампа MySQL

Я пытаюсь синхронизировать данные из одной базы данных MySQL на одном сервере с другим (местоположение с вами).

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

Я запускаю команду терминала

mysql -u dbusername -h blaa.mysql.eu1.frbit.com mypasswordhere имя_базы_данных

С помощью команды php exec. Я не получаю ошибок или чего-либо, что отображается в журнале ошибок, но кажется, что ничего не импортируется:(Когда я запускаю ту же команду через терминал, она работает, но говорит что-то вроде "использование вашего пароля mysql в терминале глупый'

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

3 ответа

Решение

Так что я закончил с классом php, который кто-то еще собрал здесь на github. Который сделал работу быстрее / лучше, чем я мог бы сделать в PHP и не возиться с командной строкой.

Попробуйте что-то вроде этого:

...
$dbhost = "blaa.mysql.eu1.frbit.com";
$dbuser = "dbusername";
$dbpass = 'mypasswordhere';
$dbname = "database_name";
$filename = "/var/www/blaa/sqlfilehere.sql"

system("mysql -h $dbhost -u $dbuser --password='$dbpass' $dbname < $filename");
...

Попробуйте следующее:

mysql -u dbusername -h blaa.mysql.eu1.frbit.com -p mypasswordhere database_name < /var/www/blaa/sqlfilehere.sql

или же

mysql -udbusername -hblaa.mysql.eu1.frbit.com -pmypasswordhere database_name < /var/www/blaa/sqlfilehere.sql

в зависимости от реализации (спасибо eKom за указание на это). позаботьтесь о том, чтобы использовать -p перед паролем. это может помочь. В противном случае команда mysql принимает указанный вами пароль в качестве имени базы данных. (хотя это должно дать вам ошибку в этом случае)

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