所以我想格式化我的系统,我在我的本地主机上做了很多涉及数据库的工作。我按照正常的方式备份数据库,将其导出到一个SQL文件中,但我认为我犯了一个错误,将所有内容都备份到一个SQL文件中(我的意思是整个本地主机只导出到一个SQL文件中),这让我搞得一团糟。
现在的问题是:当我尝试导入备份的文件时,我指的是(localhost.sql),我收到如下错误
表已存在。
信息模式性能模式
Xampp附带的每隔一个表,这一直阻止我导入数据库。
这些表是Xampp附带的phpmyadmin表。我已经尝试了几天了。
我现在的问题是,我可以从同一个编译过的SQL数据库文件中提取不同的数据库吗?
4条答案
按热度按时间pdkcd3nj1#
要导入数据库,可以执行以下操作:
在mysql中:
ruoxqz4g2#
这个错误很容易解释。表
information_schema
和performance_schema
已经在您试图导入到的MySQL服务器示例中。这两个数据库在MySQL中都是默认的,所以你要尝试将它们导入到另一个MySQL安装中,这是很奇怪的。
或者,对于多个数据库:
然后将它们导入到另一个MySQL安装中:
如果数据库已经存在于MySQL中,则需要执行以下操作:
这似乎是您要使用的命令,但是我从来没有替换过
information_schema
或performance_schema
数据库,所以我不确定这是否会削弱您的MySQL安装。例如:
请记住不要在命令行上提供密码,因为密码将以纯文本形式显示在命令历史记录中。
jjjwad0x3#
前面的响应程序似乎遗漏了一点,即转储文件localhost.sql在使用
% mysql -u [用户名] -p [数据库名称]〈本地主机. sql
会生成 * 多个 * 数据库,因此在命令行上指定 * 单个 * 数据库名称是不合逻辑的。
我遇到了这个问题,我的解决方案是不在命令行上指定[databasename],而是运行:
% mysql -u [用户名] -p〈本地主机. sql
这是可行的。
实际上,它不能立即工作,因为以前的尝试确实在mysql内部创建了一些结构,而localhost.sql中的这些位会让mysql抱怨,因为它们从第一次就已经存在了,所以现在它们不能在第二次创建。
对此问题的解决方案是手动编辑localhost.sql,并进行类似INSERT IGNORE(对INSERT进行插入忽略)的修改(这样它就不会重新插入相同的内容,也不会抱怨)、针对CREATE DATABASE的CREATE DATABASE IF NOT EXISTS、针对CREATE TABLE的CREATE TABLE IF NOT EXISTS、并且如果ALTER TABLE命令生成错误,则将其完全删除,因为到那时它们已经被执行((INSERT和CREATE可能也是出于同样的原因)。您可以使用DESCRIBE TABLE和SELECT命令检查表,以确保ALTERATION等已生效,从而提高信心。
我自己的localhost.sql文件是300 M,这是我最喜欢的编辑器emacs抱怨的,所以我不得不使用
% head -n 20000本地主机. sql| tail -n 10000〉2nd_10k行. sql
一次10000行。这并不难,因为Drupal要对里面大量的,绝大多数的垃圾负责,而我不想保留任何一个,这样我就可以很容易地把大块的东西切下来。
1yjd4xko4#
在本地主机中导入数据库的最佳方法有简单的5个步骤:
1.首先压缩sql文件以压缩数据库大小。
1.去终点站
1.创建空数据库。
1.运行命令unzip databse并导入数据库:解压-p/路径文件/数据库文件. zip| mysql -用户名-p数据库名称;
1.请输入密码