【问题标题】:MySQLdump results in lots of commented lines, no real contentMySQLdump 导致很多注释行,没有真正的内容
【发布时间】:2009-09-17 16:48:19
【问题描述】:

我正在尝试编写一个 PHP 程序来自动创建 MySQL 表的备份作为服务器上的 sql 文件:

$backup = "$path/$tablename.sql"; $table = "mydbname.mytablename"; 执行( 冲刺f( '/usr/bin/mysqldump --host=%s --user=%s --password=%s %s --quick --lock-tables --add-drop-table > %s', $主机, $用户, $密码, $表, $备份 ) );

我在生成的 .sql 文件中得到的只是:

-- MySQL 转储 10.10 -- -- 主机:localhost 数据库:mydbname.mytablename -------------------------------------------------- ------ -- 服务器版本 5.0.27 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 设置@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 设置名称 utf8 */; /*!40103 设置@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 */;

结果列表 Database:mydbname.mytablename 似乎很可疑。

我不知道从哪里开始寻找。我的主机在最初帮助我设置程​​序时说我需要停用 safe_mode(已经完成)并授予对二进制文件的访问权限(我不知道这意味着什么)。

由于我每次提问房东都需要两天时间回复,如果可能的话,我想自己解决这个问题。

【问题讨论】:

    标签: php mysql file backup mysqldump


    【解决方案1】:

    你的mysqldump命令是这样的:

    /usr/bin/mysqldump --host=HOST --user=USER --password=PASSWORD TABLE --quick --lock-tables --add-drop-table
    

    看着the manual of mysqldump,我会说它会认为TABLE实际上是你的数据库的名称​​(引用)

    有三种通用的调用方式 mysql转储:

    shell> mysqldump [options] db_name [tables]
    shell> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
    shell> mysqldump [options] --all-databases
    

    显然,您必须将数据库的名称放在要转储的表的名称之前。

    因此,例如,这样的事情可能会奏效:

    /usr/bin/mysqldump --host=HOST --user=USER --password=PASSWORD DBNAME TABLE --quick --lock-tables --add-drop-table
    


    希望这会有所帮助!


    编辑:我实际上做了一个快速测试,使用“databasename.tablename”,就像你做的那样:

    mysqldump --user=USER --password=PASSWORD --no-data DBNAME.TABLENAME
    

    我得到了与你相同的输出......但我也有一个错误:

    mysqldump: Got error: 1102: Incorrect database name 'DBNAME.TABLENAME' when selecting the database
    

    我猜,哪个是错误输出,而不是标准输出(你只是将第二个重定向到你的文件)

    如果我正在使用:

    mysqldump --user=USER --password=PASSWORD --no-data DBNAME TABLENAME
    

    一切正常:没有错误,我有转储。

    【讨论】:

    • 我在数据库名和表名之间添加了一个空格(而不是句号),效果很好。谢谢!
    猜你喜欢
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多