And*_*ift 0 php mysql backup file mysqldump
我正在尝试编写一个PHP程序,以自动创建MySQL表的备份作为服务器上的sql文件:
$backup = "$path/$tablename.sql";
$table = "mydbname.mytablename";
exec(
sprintf(
'/usr/bin/mysqldump --host=%s --user=%s --password=%s %s --quick --lock-tables --add-drop-table > %s',
$host,
$user,
$password,
$table,
$backup
)
);
我得到的.sql文件中的所有内容都是这样的:
-- MySQL dump 10.10 -- -- Host: localhost Database: mydbname.mytablename -- ------------------------------------------------------ -- Server version 5.0.27 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
结果列表数据库:mydbname.mytablename似乎很可疑.
我不知道从哪里开始寻找.我的主人在帮助我最初设置程序时说我需要停用safe_mode(已经完成)并且可以访问二进制文件(我不知道这意味着什么).
由于主持人每次提出问题需要两天时间回复,我想尽可能自己解决.
你mysqldump命令是这样的:
/usr/bin/mysqldump --host=HOST --user=USER --password=PASSWORD TABLE --quick --lock-tables --add-drop-table
Run Code Online (Sandbox Code Playgroud)
看一下mysqldump的手册,我会说它会认为TABLE实际上是数据库的名称(引用):
调用mysqldump有三种通用方法:
shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
shell> mysqldump [options] --all-databases
Run Code Online (Sandbox Code Playgroud)
显然,您必须将数据库的名称放在要转储的表的名称之前.
因此,举例来说,这样的事情可能会成功:
/usr/bin/mysqldump --host=HOST --user=USER --password=PASSWORD DBNAME TABLE --quick --lock-tables --add-drop-table
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 !
编辑:我实际上使用"databasename.tablename"进行了快速测试,就像你做的那样:
mysqldump --user=USER --password=PASSWORD --no-data DBNAME.TABLENAME
Run Code Online (Sandbox Code Playgroud)
我得到了同样的输出......但我也有错误:
mysqldump: Got error: 1102: Incorrect database name 'DBNAME.TABLENAME' when selecting the database
Run Code Online (Sandbox Code Playgroud)
我猜,这是错误输出,而不是标准输出(你只是将第二个重定向到你的文件)
如果我正在使用:
mysqldump --user=USER --password=PASSWORD --no-data DBNAME TABLENAME
Run Code Online (Sandbox Code Playgroud)
一切正常:没有错误,我有转储.
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |