David Walsh (http://davidwalsh.name/backup-mysql-database-php)의 데이터베이스 백업 스크립트를 사용하여 MYSQL 데이터베이스를 .sql 파일로 백업합니다.내 데이터베이스 백업 스크립트가 PHP에서 작동하지 않는 이유는 무엇입니까?
나는 backup이라는 사용자를 생성하고 모든 권한을 주었다. 그런 다음 코드를 PHP 파일에 저장하고 PHP 파일을 실행하는 cron 작업을 설정합니다.
이
코드입니다 : 크론 작업이 실행되면/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
//cycle through
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//save file
$handle = fopen('../backup/db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
backup_tables('localhost','alupto_backup','pass','*');
는, 백업이 작동하지 않습니다와 나는 나타나는 오류와 함께 이메일을 수신 :
이 경고 : mysql_fetch_row() : 제공된 인자 은 유효한 MySQL 결과 자원이 아님 in /home5/ideapale/public_html/amator 라인 ders_basic/관리/backup.php 라인 (18)에 18
이 코드입니다 :
while($row = mysql_fetch_row($result))
나는 SQL (쇼 테이블)를 실행 phpMyAdmin에서, 그것은 잘 작동하고 나에게 모든 테이블의 목록을 보여줍니다. 하지만 어떤 이유로 PHP 파일이 SQL을 실행하려고 할 때 오류가 발생합니다.
데이터베이스 백업 스크립트가 작동하지 않는 이유는 무엇입니까?
을보고 목록에 추가하기 위해 더 이상 사용되지 않는'ereg_replace()'를 사용합니다. –
shellexec? 왜 PHP를 사용하여 cron을 통해 프로그램을 실행합니까? –
좋아, 나는 그것을 결코 깨닫지 못했다. shellexec()을 사용하여 mysqldump를 실행하는 방법을 보여주는 좋은 튜토리얼을 알고 계십니까? – zeckdude