蠕虫复制能快速的往表中增添数据,一般用于表结构稳定性测试。

创建表test1 和 test2:

-- test1
create table test1(
id int not null primary key auto_increment,
name varchar(20),
gender int(1) default 0,
age int(2) not null);-- test2
create table test2 like test1;

向test1 插入一条数据:

insert into test1 values(default, 'tom', default, 18);

此时test1 有一条记录,test2 没有记录。

对test2 进行蠕虫复制:

1)从test1 获取原始数据(test1 和test2 的表结构必须相同)

insert into test2 select * from test1;

此时,test2 记录数为 1。

2)test2 蠕虫复制操作:

INSERT INTO test2 SELECT * FROM test2;

你会发现报错:

mysql> insert into test2 select * from test2;
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

原因就是主角冲突,解决办法,不复制主键:

insert into test2(name,gender,age) select name,gender,age from test2;

此时,test2 记录数为2。

......

重复操作,记录数数量从 1-2-4-8-16-32-64......增长。

例如:

mysql> insert into test2(name,gender,age) select name,gender,age from test2;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0mysql> insert into test2(name,gender,age) select name,gender,age from test2;
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> insert into test2(name,gender,age) select name,gender,age from test2;
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0mysql> insert into test2(name,gender,age) select name,gender,age from test2;
Query OK, 8 rows affected (0.01 sec)
Records: 8  Duplicates: 0  Warnings: 0mysql> insert into test2(name,gender,age) select name,gender,age from test2;
Query OK, 16 rows affected (0.01 sec)
Records: 16  Duplicates: 0  Warnings: 0mysql> select count(*) from test2;
+----------+
| count(*) |
+----------+
|       32 |
+----------+
1 row in set (0.01 sec)

所以,若表有主键并且有自增长,那不复制主键的值即可。

还有一种,主键没有自增长,那不复制主键可以吗?答案是不行。因为主键的前提是不能为空,赋值则发生主键冲突,不赋值则引发非空约束(多谢评论区的老哥,以前没有考虑到这种情况)。

MySQL中的蠕虫复制相关推荐

  1. (5.7)mysql高可用系列——MySQL中的GTID复制(理论篇)【转】

    转自:https://blog.csdn.net/wmq880204/article/details/53160078 一.GTID的概述: 1.全局事物标识:global transaction i ...

  2. mysql中temporary_MySQL的复制和临时表(Temporary Table)

    当你创建临时表的时候,你可以使用temporary关键字.如: create temporary table tmp_table(name varchar(10) not null,passwd ch ...

  3. mysql数据库如何克隆好友怎么弄_怎样把我的Mysql中的数据库复制到另一台电脑中...

    有两种办法. 1.在B机器上装mysql. 将A机器上的mysql/data下的你的数据库目录整个拷贝下来. 将B机器上的mysql服务停止. 找到B机器上的mysql/data目录,将你拷贝的目录粘 ...

  4. mysql中如何设置过滤器_mysql 如何动态修改复制过滤器

    MySQL动态修改复制过滤器 说说今天遇到的问题吧,今天在处理一个业务方的需求,比较变态,我大概描述一下: 1.线上的阿里云rds上面有个游戏的日志库,里面的表都是日表的形式,数据量比较大了,每次备份 ...

  5. Navicat中怎样将SQLServer的表复制到MySql中

    场景 在SqlServer中有一个表,与要在MySql中要实现的表的结构类似, 怎样将SqlServer的表复制到MySql中. Navicat下载和破解以及使用: https://blog.csdn ...

  6. MySQL中快速复制数据表方法汇总

    本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表. 这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行 的数据表. 示例如下: ...

  7. 在mysql中可以粘贴吗_现在我在学习MySQL,问问怎么复制粘贴数据库

    诶?这项技术又是什么玩意(What)? 这项技术为什么会存在?我们已经有那么多解决方案(Method)了,我们为什么要用它(Why)? 如果这项技术那么好且我们正好有场景可以用到这项技术,且能使我们的 ...

  8. Mysql中复制数据库的两种方法

    方法一:使用mysqldump 创建新的数据库 create database new_db 同一个mysql服务器复制数据库方法 mysqldump old_db -u 账户 -p密码 | mysq ...

  9. mysql中整理设置__MySQL整理

    登录 命令:mysql -h [IP 地址/域名] -P [端口] -u [用户名] -p[密码] 端口默认是3306 mysql -hlocalhost -uroot -p 断开 exit; \q; ...

  10. 蠕虫mysql_mysql蠕虫复制基础知识点

    蠕虫复制,顾名思义自己复制自己,并且数量成倍也就是以指数的形式增加.mysql蠕虫复制的重点就在于复制. 怎么去理解mysql蠕虫复制这个概念? 简单的说法就是,将我们已经存在的某张数据表中数据内容, ...

最新文章

  1. 传统产业已死,新的产业在何方?
  2. SpringCloud Zuul(一)之介绍
  3. java实验报告合肥工业大学_合肥工业大学数据结构上机实验代码与实验报告(全)github地址...
  4. Genome Research封面文章|张勇课题组开发方法绘制胚胎发育早期转录因子结合位点图谱...
  5. 51单片机串行口的使用与串行通信
  6. Confluence 6 导入 Active Directory 服务器证书 - UNIX
  7. php fpm 日志记录,使用Nginx在PHP-FPM 7上启用错误日志记录?
  8. 有限元计算软件Fenics安装使用笔记(1)
  9. 如何使用c语言开发ebpf程序
  10. 【HLA】初识HLA/RTI
  11. 3.路由实现(phalapi框架总结)
  12. 【NOIP2018模拟赛2018.8.28】video
  13. [蛋蛋无厘头日记]收到礼物喵~o(∩_∩)o
  14. 基于FPGA的深度卷积神经网络的加速器设计
  15. dropout 关于keep_prob
  16. c++中sqrt函数的使用
  17. 【ureport2 vue版本实现】
  18. window 10 前面板音频孔插入耳机没有声音
  19. ggplot2入门与进阶(上)
  20. 如何把单元格中 经纬度 60进制转成10进制

热门文章

  1. 世界读书日,给大家推荐几本书
  2. 计算机行显示性能调整,win7系统怎么调节为最佳性能模式-win7性能,win7运行速度提高90%...
  3. 计算机软件自启动设置,设置开机启动项,详细教您电脑如何设置开机启动项
  4. mysql 重置密码_mysql忘记密码如何重置密码,以及修改root密码的三种方法
  5. 使用防火墙禁止软件联网
  6. oracle字段名小写改大写,Oracle数据库中如何实现将将表中字段名转换为大写
  7. part5 vue和HTML5相关知识总结
  8. 大数据分析案例-基于RFM模型对电商客户价值分析(聚类)
  9. 软件项目的项目经理不懂技术,能做好项目经理么?
  10. 快速读懂CAN报文 DBC文件 解析文件