一次导入所有 mysql 个数据库
Importing all mysql database at once
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 知道我已经立即导出了完整的数据库,那么我如何才能指定一个数据库名称?
我现在不知道我是对还是错,但是我试了很多次,我发现了同样的问题。请告诉我如何一次性上传或导入完整的数据库。
Rohit,我认为您必须创建数据库,然后发出 USE,然后 运行 SQL。我在这里查看了手册 https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html 并且它还提供了一个选项供您在连接时提及 db_name
像 mysql -u root -p < sql.sql 这样的东西(假设数据库已经创建。这样做可能值得一试
shell> mysqldump --databases db1 db2 db3 > dump.sql
The --databases option causes all names on the command line to be treated as database names. Without this option, mysqldump treats the first name as a database name and those following as table names.
使用 --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
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 知道我已经立即导出了完整的数据库,那么我如何才能指定一个数据库名称?
我现在不知道我是对还是错,但是我试了很多次,我发现了同样的问题。请告诉我如何一次性上传或导入完整的数据库。
Rohit,我认为您必须创建数据库,然后发出 USE,然后 运行 SQL。我在这里查看了手册 https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html 并且它还提供了一个选项供您在连接时提及 db_name 像 mysql -u root -p < sql.sql 这样的东西(假设数据库已经创建。这样做可能值得一试
shell> mysqldump --databases db1 db2 db3 > dump.sql The --databases option causes all names on the command line to be treated as database names. Without this option, mysqldump treats the first name as a database name and those following as table names.
使用 --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