我正在尝试将生活在一台服务器上的一个mysql数据库中的数据同步到另一台服务器(与您同处)。
我有一系列的PHP脚本来打包数据,将其下载到服务器并解压缩..但是我很少通过命令行导入数据。
我正在运行终端命令
mysql -u dbusername -h blaa.mysql.eu1.frbit.com mypasswordhere database_name< /var/www/blaa/sqlfilehere.sql
通过php exec命令..我没有错误或任何显示在错误日志中,但似乎没有任何东西导入:(当我通过终端运行相同的命令它工作,但说'使用你的mysql密码在'终端是愚蠢的'
只是想知道是否有更聪明的方法通过PHP完成这项工作,所以每次我想要同步时我都不需要手工完成..
答案 0 :(得分:0)
尝试以下方法:
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命令将提供的密码作为数据库的名称。 (虽然在这种情况下应该给你一个错误)
答案 1 :(得分:0)
尝试这样的事情:
...
$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");
...
答案 2 :(得分:0)
所以我最终选择了一个别人放在一起的here on github的PHP课程。这项工作比我在PHP中完成的工作更快/更好,并且不会弄乱命令行。