mysql数据库报错1235,MySQL数据库导出

本文内容主要来自MySQL官方文档:“MySQL5.1 Reference,2.10.3. 将MySQL数据库拷贝到另一台机器”

注意:参数名与值间可以不用空格,如

-uroot

-u root

均可;某些参数会有不同含义

1.

数据库导出(-A导出所有数据库,-B指定数据库,可不写-B直接写数据库名):

mysqldump -uroot -p密码 -B数据库名 -h主机地址(IP) > now.sql

2.

表结构导出(-d,--no-data不导出row):

mysqldump -uroot -p123456 -d -h主机地址(IP) > now.sql

可能遇到的错误:

All tables in the MERGE table are not identically defined when using LOCK TABLES-大意是说某个MERGE引擎的表结构中定义的子表全部不存在,找到该表后drop掉或者重建即可。

mysqldump: Got error: 1017: Can't find file: 'abc' (errno: 2) when using LOCK TABLES-这个可能是某个表的数据库文件被删除了(如MyISAM的表结构文件table.frm不存在但是INFORMATION_SCHEMA中的表名并未删除,导致可以查到该表,但是其表结构数据已经不存在)

3.

在其他服务器创建数据库:

mysqladmin -h

主机地址(IP)

create 要创建的数据库名 -p密码

4. 导出到文件:(需支持管道和gzip,-q指quick导出,不进缓冲区直接导入输出流,默认开启,使用--skip-quick来关闭)

mysqldump -q 数据库名 -p | gzip now.gz

5.

导出到其他服务器:(--opt包含琐表等多项操作,默认开启,使用--skip-opt关闭)

mysqldump --opt -p密码 数据库名 | mysql -h 远程数据库地址(IP) 远程数据库名 -p远程数据库密码

6.

同时导出存储过程:(-R导出存储过程和函数)

mysqldump --opt -p密码 -R -B 数据库名 > functions.sql

7.

单独导出存储过程:(-n指--no-create-db,-t指--no-create-info,分别表示不导出建数据库和建表的语句,其中-n仅在-A导出所有数据库或使用-B指定数据库时才生效)

mysqldump 数据库名 -p密码 -ndtR | mysql -h 远程数据库地址(IP) 远程数据库名 -p远程数据库密码

8.导出到其他服务器报错:

ERROR 1235 (42000) at line 26: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

大意是说MySQL(5.0版)暂不支持在同一操作中导出一张表的多个触发器。

解决办法: 默认不带任何参数的时候 tiggers 值为真,那么我们修改他的值为假,给mysqldump 加上开关: --triggers=false 即可。

9.查看存储过程、函数和触发器的语句:

SHOW PROCEDURE STATUS;

SHOW FUNCTION STATUS;

SHOW TRIGGERS FROM test;

MySQL5.0 - 5.1.20不支持“SHOW CREATE TRIGGER”,于是有大牛分别用函数和视图写了一个等价的方法:

CREATE FUNCTION SHOW_CREATE_TRIGGER(in_trigger varchar(255))

RETURNS text READS SQL DATA

BEGIN

DECLARE returnText text;

SELECT CONCAT_WS(

" ",

"CREATE TRIGGER",

TRIGGER_NAME,

ACTION_TIMING,

EVENT_MANIPULATION,

"ON",

EVENT_OBJECT_TABLE,

"FOR EACH ROW",

ACTION_STATEMENT) into returnText

FROM information_schema.triggers;

RETURN returnText;

END

10.如果不希望导出的数据中包含注释,可以使用“--skip-comments”或“--compact”,后者包含了前者以及其他参数,但还是会有少量信息。使用“mysqldumpl --help”可以看到完整的参数信息。

11.后来发现低版本的mysqldump貌似不支持-R参数:mysqldump --version

mysqldump  Ver 10.9 Distrib 4.1.20, for redhat-linux-gnu (i386)

参数说明:

-n: --no-create-db

-d: --no-data

-t: --no-create-info

-R: --routines Dump stored routines (functions and procedures)

Mysqldump是客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建活装载表的SQL语句:

主要参数介绍:

1.连接选项

-u,--user=name

-p,--password=name

-h,--host=name

-P,--port=#

2.输出内容选项

--add-drop-database

--add-drop-table

-n;--no-create-db

-d;--no-data

-t;--no-create-info

3.输出格式选项

--compact

-c --complete-insert

-T(指定数据表中的数据备份为单纯的数据文件和建表SQL两个文件)

注意:xx.sql建表文件是以linux的root用户创建,而xx.txt文件则是一linux的mysql用户创建,因此这两个文件的存放路径一定要保证mysql用户有读写创建文件的权限。

--fields-terminated-by=name(域分隔符)

--fields-enclosed-by=name(域引用符)

--fields-optionally-enclosed-by=name(域引用可选字符)

--fields-escaped-by=name(转义字符)

4.字符集选项

--default--character-set=xx

5.其他选项

-F --flush-logs(备份前刷新日志)

-l --lock-tables(给所有的表加读锁)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值