mysqldump未导入所有数据库。
mysqldump未导入所有数据库。
我需要导入一个非常大的数据库备份。
我正在使用以下命令导入所有数据库:
mysqldump -u root -p --all-databases < localhost.sql
它可以工作,但只导入了6个数据库中的5个。
这个文件有70万行,所以很难只选择我关心的最后一个数据库。
有什么建议吗?谢谢!
编辑:
使用
mysqldump -u root -p joomla < localhost.sql
出现错误
'[root@tp lota]# mysqldump -u root -p joomla < localhost.sql Enter password: -- MySQL dump 10.13 Distrib 5.1.69, for redhat-linux-gnu (x86_64) -- -- 主机:localhost 数据库:joomla -- ------------------------------------------------------ -- 服务器版本 5.1.69 /*!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 */; mysqldump: 在选择数据库时出现错误:1049: 未知数据库 'joomla'
编辑 #2:问题是备份中的数据库信息模式。删除后一切正常。谢谢你们的回答。
问题原因:在新版本的mysql中,设置了sql_mode为NO_AUTO_CREATE_USER,导致从SQL文件中恢复数据失败。
解决方法:
1. 打开终端并输入以下命令:
mysql -u root -p
2. 检查已存在的数据库:
mysql> show databases;
3. 如果尚未创建数据库,则创建一个新的数据库:
mysql> create database "Name";
4. 选择新创建的数据库:
mysql> USE ABCD;
5. 选择机器上SQL文件的路径:
mysql> source /home/Desktop/new_file.sql;
6. 按下回车键,等待一段时间,如果一切顺利执行完毕,则退出mysql:
mysql> exit
感谢解决方案,虽然在大多数情况下并不是最智能的解决方案,但当较新版本的mysql在导出时出现错误时,设置sql_mode为NO_AUTO_CREATE_USER是导致从这种文件中恢复数据失败的原因,类似mysql -u USER -p DB < dump.sql这样的简单导出命令。但幸运的是,您的步骤起作用了。
Adnan Ali 感谢,对于大多数情况来说,它比其他解决方案更好用。
问题:mysqldump无法导入所有数据库的原因是什么?如何解决?
原因:mysqldump命令用于导出数据,而不是导入数据。因此使用mysqldump命令导入数据时会出现问题。另外,在导入之前可能需要先创建一个空的数据库。
解决方法:不要使用mysqldump命令,而是使用mysql命令来导入数据。同时,在导入之前可能需要先创建一个空的数据库。
具体解决方法如下:
1. 打开终端或命令提示符窗口。
2. 输入以下命令,使用mysql命令导入数据:
mysql -u root -p < localhost.sql
3. 如果在导入之前需要创建一个空的数据库,请先使用以下命令创建数据库:
mysql -u root -p -e "CREATE DATABASE 数据库名;"
注意将“数据库名”替换为实际的数据库名称。
通过以上步骤,您将能够成功使用mysql命令导入数据,而不是使用错误的mysqldump命令。同时,如果需要,您也可以先创建一个空的数据库。