Я пытаюсь сделать простую страницу с двумя кнопками, чем при нажатии одной из них база данных сбрасывается (mysqldump
), а с другой восстанавливается (импортируется).
Я попытаюсь сделать это для одной среды разработки, у меня нет централизованного сервера, и в некоторых случаях я работаю с нескольких разных компьютеров в зависимости от дня и ситуации, сам сценарии (то есть код), которые я просто синхронизирую с SpiderOak, и я пытаюсь сделать mysqldump, чтобы сделать то же самое между ПК.
index.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>Herramienta Back Up/Restore DataBase ;)</title>
<link rel="stylesheet" type="text/css" href="Babifu.css">
</head>
<body>
<center>
<img class="thumb" src="http://lorempixel.com/g/450/370/nightlife/"/><br /><br />
<form id="me1" action="backup.php" method="post"><br /><br /><br />
<input type="submit" value="Backup database" />
</form>
<form id="me2" action="restore.php" method="post"><br /><br /><br /><br /><br /><br />
<input type="submit" value="Importar" />
</form>
<div class="clear"></div>
</center>
</body>
</html>
backup.php
<?php
include('conection.php');
try {
$qls = "mysqldump --default-character-set=UTF8 --single-transaction -u root -p[Paswordofthedatabase] u739462586_dtren > restoresync.sql";
$stmt = $con->prepare($qls);
$rslt = $stmt->execute();
echo "Base de Datos Salvadas Correctamente";
} catch(PDOException $e) {
echo $e->getMessage;
}
?>
restore.php
<?php
include('conection.php');
try {
$qls = "mysql -u root -p[Paswordofthedatabase] < restoresync.sql";
$stmt = $con->prepare($qls);
$rslt = $stmt->execute();
echo"Base de Datos Restaurados/Importados Correctamente";
} catch(PDOException $e) {
echo $e->getMessage;
}
?>
Проблема в том, что она не работает, консоль не показывает никаких сообщений об ошибках, и это делает PHP.
Возможно ли это сделать с помощью запроса? Как мне это сделать? Что не так с этим кодом?
И есть ли способ убедиться, что резервная копия будет создана в определенной папке? Любые предложения, комментарии, просьба о разъяснении, вопросы или ответы будут очень благодарны.
Это не запросы MySQL, а команды, которые вы выполняете через терминал.
Используйте это, чтобы выполнить команду и получить полный выход:
$dump_output = shell_exec("mysqldump --opt --default-character-set=UTF8 --single-transaction --protocol=TCP -u --user=root --password=dbpassword --host=localhost DB_NAME > restoresync.sql");
echo $dump_output; /* Your output of the dump command */
$restore_output = shell_exec("mysql -u root -p[Paswordofthedatabase] < restoresync.sql");
echo $restore_output; /* Your output of the restore command */
Вместо shell_exec()
Вы также можете использовать exec()
лайк halfer упоминается.
Разница между ними в том, что вы получаете полный вывод с shell_exec()
и с exec()
вы получите только последнюю строку, возвращенную из выходных данных.
Других решений пока нет …