【问题标题】:PHP script to restore a database into another empty database将数据库恢复到另一个空数据库的 PHP 脚本
【发布时间】:2013-08-27 05:35:12
【问题描述】:

这个问题可能看起来是重复的,但是我尝试了所有示例来恢复我的数据库,但似乎没有一个对我有用。 我正在尝试运行一个脚本,将我的备份 sql 文件恢复到新数据库。我尝试了这些行来恢复我的数据库,但似乎没有任何工作。

     $mysql_host = 'localhost';
     $mysql_username = 'my_username';
     $mysql_password = 'somepassword';
     $db_name = 'test_db';


    $source = 'C:/wamp/www/my_folder/test_db.sql';

    $conn = mysql_connect( $mysql_host, $mysql_username, $mysql_password ) or die('Error connecting to MySQL server: ' . mysql_error());

    mysql_query("CREATE DATABASE $db_name", $conn ) or die('Error connecting to MySQL server: ' . mysql_error());

    restore_my_database( $mysql_host, $mysql_username, $mysql_password, $db_name, $source );

    function restore_my_database( $mysql_host, $mysql_username, $mysql_password,  $db_name, $source ) {

        exec("mysql --opt -h $mysql_host -u $mysql_username -p $mysql_password $db_name < $source");
    }

我还尝试了函数 restore_my_database 以下行

$command = "mysqldump --opt -h $mysql_host -u $mysql_username -p $mysql_password $db_name > $source";
system($command);

直到数据库创建,代码工作正常,但恢复不起作用。 任何人都可以帮助我使用 php 恢复代码来恢复我的数据库。提前致谢

【问题讨论】:

  • 这是新代码吗?如果是,您可能需要考虑避免使用 mysql_* 函数(它们已被弃用)。相反,请考虑使用 PDOMySQLi - this article 将帮助您决定哪个。
  • mysqlmysqldump 命令不在用户执行脚本的路径中。使用这些命令的完整路径,然后重试。
  • 我实际上只使用了完整路径,就像给定的 exec("C:/wamp/bin/mysql/mysql5.5.8/bin/mysql --opt -h $mysql_host -u $mysql_username - p $mysql_password $db_name

标签: php mysql phpmyadmin php-5.4


【解决方案1】:

你可以通过下面的代码来实现它,首先从.sql文件中获取内容然后执行查询

$source = 'C:/wamp/www/my_folder/test_db.sql';

$conn = mysql_connect( $mysql_host, $mysql_username, $mysql_password ) or die('Error connecting to MySQL server: ' . mysql_error());

mysql_query("CREATE DATABASE $db_name", $conn ) or die('Error connecting to MySQL server: ' . mysql_error());
mysql_select_db($db_name);
$qry = file_get_contents($source);
mysql_query($qry, $conn);

同时增加最大执行时间,php.ini 文件中的内存限制

【讨论】:

  • 感谢您的帮助。我想要从源文件恢复到目标文件。上面的代码会这样做还是会这样做?我还需要做什么?
  • 此脚本将更新数据库,而不是在文件中,如果您想在文件中写入,您可以通过使用 file cancepts 将文件内容写入目标文件来完成
  • 上面的代码就可以了,只要给一个sql路径并运行这个脚本,它就会将数据插入数据库
  • $qry = file_get_contents($source);没有给我任何结果,检查文件名,它仍然存在然后 file_get_contents 没有显示任何内容。
【解决方案2】:

-- 你必须创建一个模式:

mysql
mysql> create database [your schema name];
mysql> grant all privileges on [your schema name].* to [your username]@localhost identified by '[your password]';

-- 在您的计算机上创建 sql 转储:

mysqldump [your schema name] > [your schema name].sql

-- 并将其导入新数据库:

mysql [your schema name] <   [your schema name].sql;

【讨论】:

    【解决方案3】:

    由于您使用“phpmyadmin”标记此内容,请尝试使用 phpMyAdmin 创建您的数据库,然后导入您的 .sql 文件。

    【讨论】:

      【解决方案4】:
      //recupero il nome del file .sql
      $file = "C:/wamp/www/my_folder/test_db.sql";
      
      //definisco il nome del database
      $db = 'name_db';
      
      //effettuo la connessione al databse
      $conn = mysqli_connect($mysql_host, $mysql_username, $mysql_password) or die('Errore di connessione al server MySQL: ' . mysqli_error());
      
      //seleziono il database
      mysqli_select_db($conn,$db);
      
      //leggo il contenuto del file .sql
      $qry = file_get_contents($file);
      
      //divido tutte le query presenti nel file .sql
      $query = explode(";",$qry);
      
      //conto quante query esistono
      $arrlenght = count($query);
      
      //ciclo tutte le query del file
      for($i=0;$i<$arrlenght;$i++){
          mysqli_query($conn, $query[$i]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-07
        • 1970-01-01
        相关资源
        最近更新 更多