【问题标题】:How to export database to another host which doesn't allow to create a new database with my old database name?如何将数据库导出到另一个不允许使用我的旧数据库名称创建新数据库的主机?
【发布时间】:2015-02-12 13:50:30
【问题描述】:

我想在另一台主机上创建我的网站的副本。我在两个主机上都处于免费计划中。

我试图在其中复制我的站点的新主机允许创建一个名称为 xyzhost_id_* 的新数据库。但是我之前的数据库名是abchostid_*

我的 abchostid_* 数据库中有 40 多个表。

我该怎么办?

【问题讨论】:

    标签: php mysql phpmyadmin hosting host


    【解决方案1】:

    如果您执行 mysqldump,那里通常没有数据库信息,只有表模式。如果有创建数据库的选项,只需打开您的 sql 文件并删除它们。它们看起来像“创建数据库 your_database”和“使用 your_database”。然后,使用 phpmyadmin,您可以简单地创建新数据库并加载您的 SQL 文件。

    【讨论】:

    • mysqldump -u root -p --opt [abchostid_*] > [abchostid_*].sql 这是命令吗? @Dotcomsuperstar
    • 明确一点,是表名还是数据库名的命名限制?无论哪种方式,“mysqldump YOUR_DB_NAME -u root -p > dump.sql”都可以。然后,您可以在文件上使用“sed”(linux 搜索和替换)来重命名所有表(如果限制是表名),但是如果您弄错了正则表达式,这可能会搞砸。由于它只有 40 个表,我只需编辑转储并手动重命名表,确保更新任何外键(又名 CONSTRAINT)
    • 另外,在新主机上,如果您没有 phpmyadmin,首先使用“创建数据库 my_db”之类的内容创建数据库并使用以下命令加载它:mysql YOUR_DB_NAME -u root -p
    • 我认为限制仅限于数据库名称。在这种情况下,dump.sql 文件创建后我该怎么办?请逐步解释。 @Dotcomsuperstar
    • 我在两台主机上都有 phpmyadmin。 @Dotcomsuperstar
    【解决方案2】:

    基本上,您可以将“xyzhost_id_”和“abchostid_”视为表前缀。继续重命名您的表,并确保您的脚本在查询中具有新前缀。

    【讨论】:

    • 用 abc 主机的 dbname 在 xyz 主机上创建一个新表?请详细说明。 @valicu2000
    • 您可以将每个表导出到单独的 .sql 文件中,然后在新主机上导入它们。您还需要在脚本中重命名旧数据库变量。
    • 问题已解决。无论如何,出于知识目的,我也想知道您的方法。你的意思是我应该打开每个表并修改数据库名称?
    猜你喜欢
    • 2018-11-29
    • 2018-06-18
    • 2023-03-15
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多