一次导入所有mysql数据库

时间:2016-08-02 07:31:56

标签: mysql database phpmyadmin mysqldump

mysql允许您立即导出完整的数据库,但我发现是否真的很难一次导入完整的数据库。

我使用了mysqldump -u root -p --all-databases > alldb.sql,当我尝试通过mysql -u root -p < alldb.sql命令导入完整的数据库时,它给了我非常奇怪的错误。

Error
SQL query:

--
-- Database: `fadudeal_blog`
--
-- --------------------------------------------------------
--
-- Table structure for table `wp_commentmeta`
--
CREATE TABLE IF NOT EXISTS  `wp_commentmeta` (

 `meta_id` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
 `comment_id` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT  '0',
 `meta_key` VARCHAR( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
 `meta_value` LONGTEXT COLLATE utf8mb4_unicode_ci,
PRIMARY KEY (  `meta_id` ) ,
KEY  `comment_id` (  `comment_id` ) ,
KEY  `meta_key` (  `meta_key` ( 191 ) )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci AUTO_INCREMENT =1;

MySQL said: Documentation

#1046 - No database selected  

它的说法#1046 - 没有选择数据库,我的问题是,当mysql知道我已经一次导出完整的数据库时,我该如何只指定一个数据库名称?

如果我对或错,我现在不会,但我多次尝试,我发现了同样的问题。请告诉我们如何一次上传或导入完整的数据库。

1 个答案:

答案 0 :(得分:0)

Rohit,我认为您必须创建数据库,然后发出USE然后运行SQL。我查看了这里的手册https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html,它还提供了一个选项,供您在连接时提及db_name 像mysql -u root -p&lt; sql.sql(假设数据库已经创建。尝试这样做可能值得一试

  

壳&GT; mysqldump --databases db1 db2 db3&gt; dump.sql   --databases选项使命令行上的所有名称都被视为数据库名称。如果没有此选项,mysqldump会将第一个名称视为数据库名称,将后续名称视为表名称。

使用--all-databases或--databases,mysqldump会在每个数据库的转储输出之前写入CREATE DATABASE和USE语句。这可确保在重新加载转储文件时,如果每个数据库不存在,它将创建每个数据库,并使其成为默认数据库,以便将数据库内容加载到它们所来自的同一数据库中。如果要在重新创建数据库之前使转储文件强制删除每个数据库,请同时使用--add-drop-database选项。在这种情况下,mysqldump在每个CREATE DATABASE语句之前写入DROP DATABASE语句。

来自:https://dev.mysql.com/doc/refman/5.7/en/mysqldump-sql-format.html