所以我想格式化我的系统,我在我的本地主机上做了很多涉及数据库的工作。我遵循了将数据库导出到SQL文件的正常备份方式,但我认为我错误地备份了一个SQL文件中的所有内容(我的意思是整个localhost仅被导出到一个SQL文件中),这使我感到非常混乱。
现在的问题是:当我试图导入备份文件(我指的是(localhost.sql) )时,我得到了一个错误,例如
表已经存在。 information_schema performance_schema
Xampp附带的所有其他表,它一直阻止我导入数据库。
这些表是Xampp附带的phpmyadmin表。几天来我一直在努力克服这件事。
我现在的问题是,我可以从同一个已编译的SQL数据库文件中提取不同的数据库吗?
发布于 2020-02-24 06:56:16
要导入数据库,可以执行以下操作:
mysql -u username -p database_name < /path/to/database.sql在mysql内部:
mysql> use database_name;
mysql> source database.sql;发布于 2017-03-03 13:51:08
这个错误是不言而喻的.表information_schema和performance_schema已经位于要导入的MySQL服务器实例中。
这两个数据库在MySQL中都是默认的,因此您尝试将这些数据库导入另一个MySQL安装中是很奇怪的。创建要从命令行导入的.sql文件的基本语法是:
$ mysqldump -u [username] -p [database name] > sqlfile.sql或用于多个数据库:
$ mysqldump --databases db1 db2 db3 > sqlfile.sql然后将它们导入另一个MySQL安装:
$ mysql -u [username] -p [database name] < sqlfile.sql如果数据库已经存在于MySQL中,则需要执行以下操作:
$ mysqlimport -u [username] -p [database name] sqlfile.sql这似乎是您想要使用的命令,但是我从未替换过information_schema或performance_schema数据库,因此我不确定这是否会损害您的MySQL安装。
例如:
$ mysqldump -uDonglecow -p myDatabase > myDatabase.sql
$ mysql -uDonglecow -p myDatabase < myDatabase.sql记住不要在命令行上提供密码,因为这将在命令历史记录中以纯文本可见。
发布于 2020-10-31 09:18:00
前面的响应者似乎缺少的一点是,当使用
% mysql -u用户名-p数据库名< localhost.sql
生成多个数据库,因此在命令行上指定单个数据库名是不合逻辑的。
我遇到了这个问题,我的解决方案是不在命令行上指定databasename,而是运行:
% mysql -u用户名-p < localhost.sql
这很管用。
实际上,由于以前的尝试确实在mysql内部创建了一些结构,所以它无法立即工作,而localhost.sql中的这些位数让mysql抱怨,因为它们从第一次开始就已经存在,所以现在不能在第二次创建它们。
解决方案是手动编辑localhost.sql,并修改如INSERT忽略INSERT insert(因此它不会重新插入相同的内容,也不会抱怨),如果CREATE数据库不存在,则创建数据库;如果CREATE不存在,则创建表;如果生成错误,则完全删除ALTER命令,因为到那时它们已经被执行(以及插入和创建可能也是出于同样的原因)。您可以使用DESCRIBE检查这些表,并选择命令,以确保ALTERations等已经占据了可靠的位置。
我自己的localhost.sql文件是300 m,这是我最喜欢的编辑器emacs抱怨的,所以我不得不使用
%头-n 20000 localhost.sql -n 10000 > 2nd_10k_lines.sql
一次过10k行。这并不太难,因为drupal要为大量的垃圾负责,其中绝大部分都是垃圾,我不想留下任何垃圾,这样我就可以很容易地把大块的垃圾切开了。
https://stackoverflow.com/questions/42519878
复制相似问题