我在服务器上的数据库中保存了一组基本数据。当用户注册我的服务时,我希望能够将此数据库复制到已创建的另一个数据库。有没有一种简单有效的方法来使用PHP / MySQL来做到这一点呢?纯MySQL会更好。
我考虑过遍历基础数据库中的所有表,但我不知道如何创建包含新数据库列的表。
运行PHP5.1和MySQL 5。
谢谢。
发布于 2011-06-05 13:14:49
这里有一篇文章,介绍了备份和恢复数据库的十种方法。每种方法都使用不同的方法,大多数方法可能适用于您的情况,但也有一些方法适用:
http://www.noupe.com/how-tos/10-ways-to-automatically-manually-backup-mysql-database.html
第六讲创建一个转储文件,然后再恢复它。您可以使用它将数据转储出去,然后将其恢复到新数据库中。
这里的另一个选择是制作数据库的物理副本。如果您将数据库存储在不同的位置,这可能是一个选择。它不会这么简单,但它应该工作得很好。
最后,您可以从PHP运行一个脚本,该脚本将为您执行MySql转储命令。这将允许您复制整个数据库并将其设置在新的位置,因此您甚至不需要有一个数据库来完成此操作:
发布于 2012-10-31 00:50:05
如果您拥有使用make "exec“系统调用的权限,则可以执行以下操作
exec("mysql -u".$DB_USER." --password='".$DB_PASS."' -e 'DROP DATABASE IF EXISTS `".$NEW_DB."`; CREATE DATABASE `".$NEW_DB."`;'");
exec("mysqldump -u".$DB_USER." -p'".$DB_PASS."' ".$EXISTING_DB." | mysql -u ".$DB_USER." --password='".$DB_PASS."' ".$NEW_DB);这将删除$NEW_DB (如果存在)并重新创建它,然后将$EXISTING_DB中的所有表和数据转储到$NEW_DB中
免责声明:在命令行中传递mysql密码通常不是一个好主意。我不确定,但我猜这可能是某个拥有root访问权限的人看到的,他有能力查看所有进程和启动它们的命令行选项。
此外,对于如何在新数据库中创建一个列与另一个表匹配的表的其他问题,您可以使用以下SQL
CREATE TABLE new_database.new_table LIKE old_database.old_table发布于 2011-06-05 13:24:44
我不认为为每个注册复制一个数据库是一个好办法。您应该让每个签名用户共享基础数据库,并根据需要查询所需的数据,而不是进行如此多的重复。
如果您知道基本数据库的模式,我就不明白为什么在创建相应的表时会有问题。
你的客户越多,你就越应该考虑分享而不是复制。尽管数据库是为事务设计的,但你应该尽可能避免不必要的写操作,因为这会占用太多的时间和资源。
https://stackoverflow.com/questions/6241102
复制相似问题