zymh_zy 发表于 2006-03-21 13:26

mysqldump备份数据库出错!急~~~

#mysqldump -uroot -p --default-character-set=gbk --skip-opt Ding9_DB > ding9.sql

用vi 打开ding9.sql ,发觉表丢失了auto_inrement,表的数据齐全.

#mysqldump -uroot -p --default-character-set=gbk --opt Ding9_DB > ding9B.sql
用vi 打开ding9B.sql发现表就有auto_inrement. 但一些表的数据就不齐全。发现ding9.sql 跟ding9B.sql的大小相差10M左右。ding9.sql为45m,ding9B.sql为34m.

那么有什么办法可以既有auto_inrement ,数据又齐全?mysqldump后面应带什么参数?

yejr 发表于 2006-03-21 14:13

mysqldump --help
看看 --skip-opt 里头都包含了什么你就知道为什么了

zymh_zy 发表于 2006-03-21 14:46

--skip-opt          Disable --opt. Disables --add-drop-table, --add-locks,
                      --create-options, --quick, --extended-insert,
                      --lock-tables, --set-charset, and --disable-keys.

--opt               Same as --add-drop-table, --add-locks, --create-options,
                      --quick, --extended-insert, --lock-tables, --set-charset,
                      and --disable-keys. Enabled by default, disable with
                      --skip-opt.


mysqldump --help看过,上面这些说明俺也看得懂。但还是不明白用-skip-opt就没有auto_increment用--opt就有auto_increment 而数据就有些不全。难道是因为在用mydump时,源数据库仍在读写状态,没有停掉原因?

rardge 发表于 2006-03-21 15:06

我怎么没发现我有丢失数据的情况啊?
而且,你说的 auto_increment 没有是什么意思?我导出的文件中,有这个字段的值啊。

zymh_zy 发表于 2006-03-21 16:00

CREATE TABLE `order_form` (
`orde_id` int(11) NOT NULL auto_increment,
`orde_number` char(12) NOT NULL,
`user_id` int(8) NOT NULL,
`user_merc_id` int(8) NOT NULL,
`mepm_id` tinyint(1) NOT NULL,
`mese_id` tinyint(1) NOT NULL,
`orde_carriage` float(7,2) NOT NULL,
`orde_consignee` char(20) NOT NULL,
`orde_address` varchar(80) NOT NULL,
`orde_postalcode` char(6) NOT NULL,
`orde_tel` char(22) default NULL,
`orde_mobil` char(12) default NULL,
`orde_consignee_des` char(20) NOT NULL,
`orde_address_des` varchar(80) NOT NULL,
`orde_postalcode_des` char(6) NOT NULL,
`orde_tel_des` char(22) default NULL,
`orde_mobil_des` char(12) default NULL,
`orst_id` tinyint(1) NOT NULL,
`orde_agio_code` varbinary(20) default NULL,
`orde_time` datetime NOT NULL,
`orst_time` datetime default NULL,
`orde_remark` varchar(20) default NULL,
PRIMARY KEY(`orde_id`),
KEY `orde_number` (`orde_number`),
KEY `user_id` (`user_id`,`orst_id`),
KEY `user_merc_id` (`user_merc_id`,`orst_id`),
KEY `orde_time` (`orde_time`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;


这是ding9B.sql里面一个order_form表的结构,这个表是有auto_increment ,而ding9.sql 同样的order_form表就没有auto_increment 。

zymh_zy 发表于 2006-03-21 16:02

原帖由 rardge 于 2006-3-21 15:06 发表
我怎么没发现我有丢失数据的情况啊?
而且,你说的 auto_increment 没有是什么意思?我导出的文件中,有这个字段的值啊。

你的导出命令是怎样的?还有你是在mysql数据库没有读写的前提下用mysqldump导吗?

rardge 发表于 2006-03-21 16:28

原帖由 zymh_zy 于 2006-3-21 16:02 发表


你的导出命令是怎样的?还有你是在mysql数据库没有读写的前提下用mysqldump导吗?
mysqldump -F --opt -uroot -p DBName > ... 就是这样么
mysqldump 是要 mysqld 运作的时候才能使用的工具,所以做导出的时候,是否读写都有可能。--opt 本身不是有 --lock-tables 么。

hijackgoodbye 发表于 2006-03-21 16:53

用了--opt就会使数据库只能读不能写,仅供参考

yejr 发表于 2006-03-22 09:15

你的数据库版本是什么?怎么建表的?
我的 4.1.13-standard-log ,并无你所说问题。

zymh_zy 发表于 2006-03-24 10:07

原帖由 yejr 于 2006-3-22 09:15 发表
你的数据库版本是什么?怎么建表的?
我的 4.1.13-standard-log ,并无你所说问题。

俺的数据库是mysql5.0 俺是用PORTS来安装的MYSQL。 系统为FREEBSD6。0, 表的结构大部份是用power designer 来建表,然后整体导入到mysql ,只有一小部份是直接在mysql里建的。
页: [1] 2
查看完整版本: mysqldump备份数据库出错!急~~~