用navicat进行mysql表结构同步

用navicat进行mysql表结构同步

  • 前言
  • 新增一个列然后进行表结构同步
  • 删除一个列然后进行表结构同步
  • 把Int列转成TinyInt列,看数字溢出的情况下能不能表结构同步
  • 总结

前言

从同事那边了解到还能用navicat进行表结构同步,他会在发布更新的时候,直接从测试环境导出全量表,然后和正式环境做表结构更新,这样在不改动数据的情况下就可以更新好正式环境而不是去一个个的写ALTER更新语句。避免了遗漏。
打算做几个测试

  1. 新增一个列然后进行表结构同步
  2. 删除一个列然后进行表结构同步
  3. 把Int列转成TinyInt列,看数字溢出的情况下能不能表结构同步

新增一个列然后进行表结构同步

准备一个测试表,我来试一试,弄2个库,再弄2条数据

CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;
CREATE DATABASE prod DEFAULT CHARACTER SET utf8mb4;CREATE TABLE user (
`id` INT PRIMARY KEY,
`name` VARCHAR(16),
`age` INT
) ENGINE InnoDB;INSERT INTO user VALUES (1, "小明", 13),(2,"小红", 99);

然后再更新test库

ALTER TABLE `user` DROP COLUMN `desc`;
ALTER TABLE `user` ADD COLUMN `desc` VARCHAR(256) NOT NULL DEFAULT "";

然后进行表结构同步
在这里插入图片描述
在这里插入图片描述
看到sql比较很准确,点击执行就可以了

删除一个列然后进行表结构同步

把test库里user的desc列删掉

ALTER TABLE `user` DROP COLUMN `desc`;

然后进行表结构同步
在这里插入图片描述
在这里插入图片描述
看的到也执行正确

把Int列转成TinyInt列,看数字溢出的情况下能不能表结构同步

把prod表中小红的age改成999999

UPDATE `user` SET COLUMN age=999999 WHERE `id`=2;

在这里插入图片描述
然后把test库中user表的age类型改成tinyInt

ALTER TABLE `user` MODIFY COLUMN `age` TINYINT;

然后再进行sql结构同步
在这里插入图片描述
sql语句怎么是这样的?AFTER是什么?

SET FOREIGN_KEY_CHECKS=0;ALTER TABLE `prod`.`user` MODIFY COLUMN `age` tinyint NULL DEFAULT NULL AFTER `name`;SET FOREIGN_KEY_CHECKS=1;

执行之后发现出错了,表结构修改不成功
在这里插入图片描述
然后把prod里user表里,小红的age改成9,再试一遍,成功了
在这里插入图片描述
也就是在数据溢出的情况下,表结构不能更改。

总结

表结构同步可以很方便的得到我们需要的变更sql语句,这样在更新包的时候,就方便了,但是这个方法在实际工作中有人用过,有人从没用过,所以,和同事协作的时候,最好给别人发sql时发增量sql,而不是导全表,然后让别人做sql结构同步,因为别人很可能会把sql直接执行掉,而navicat导出的全表结构都是带drop if exists的,会把正式环境的表删掉的,就有人把这个删掉过,因为沟通没沟通好,一边发了全量sql,另一边的同事执行了这个sql导致正式环境库被清了。很倒霉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/578545.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯选拔赛真题50】C++简易炸弹超人 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

目录 C简易炸弹超人 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C简易炸弹超人 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 有一块矩形游戏场地&#x…

OSCP靶场--RubyDome

OSCP靶场–RubyDome 考点(CVE-2022-25765 suid ruby提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV 192.168.249.22 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-29 00:28 EDT Nmap scan report for 192.168.249.22 Hos…

跃然纸上的灵感再现,手绘风格的开源绘图白板工具:Excalidraw

Excalidraw:即绘即思,直观呈现未来流程图!- 精选真开源,释放新价值。 概览 在撰写文章或构建演示案例的过程中,为了增强视觉表现力和信息传达深度,适时融入图表或图形显得至关重要。Excalidraw作为一款基于…

67、yolov8目标检测和旋转目标检测算法部署Atlas 200I DK A2开发板上

基本思想:需求部署yolov8目标检测和旋转目标检测算法部署atlas 200dk 开发板上 一、转换模型 链接: https://pan.baidu.com/s/1hJPX2QvybI4AGgeJKO6QgQ?pwdq2s5 提取码: q2s5 from ultralytics import YOLO# Load a model model YOLO("yolov8s.yaml")…

前端面试拼图-数据结构与算法(二)

摘要:最近,看了下慕课2周刷完n道面试题,记录下... 1. 求一个二叉搜索树的第k小值 二叉树(Binary Tree) 是一棵树 每个节点最多两个子节点 树节点的数据结构{value, left?, right?} 二叉树的遍历 前序遍历:root→left→right 中…

【Redis】数据类型、事务执行、内存淘汰策略

目录 数据类型 Redis事务执行步骤 步骤: redis内存淘汰策略 设置内存淘汰策略 1.设置配置文件 2.通过命令设置 数据类型 官网解释 Understand Redis data types | Redis 首先,Redis 的所有键都是字符串,常用的数据类型有 5 种:Strin…

vue3+threejs新手从零开发卡牌游戏(二十一):添加战斗与生命值关联逻辑

首先将双方玩家的HP存入store中,stores/common.ts代码如下: import { ref, computed } from vue import { defineStore } from piniaexport const useCommonStore defineStore(common, () > {const _font ref() // 字体const p1HP ref(4000) // 己…

科普——芯片的市场价格

以前以为进口的芯片会很贵,其实不然,均在很低,粗略找了几个,批发价格在50元上下 厂商型号:STM32F103RCT7 品牌名称:ST(意法半导体) 元件类别:MCU 封装规格:64-LQFP(10x1…

数字范围按位与

题目链接 数字范围按位与 题目描述 注意点 0 < left < right < 2^31 - 1包含 left 、right 端点 解答思路 返回区间内所有数字按位与的结果&#xff0c;所以区间内所有数字在某一位的值相同&#xff0c;则结果该位数字为该值&#xff0c;否则该位数字为0&#xf…

【动态规划】1223. 掷骰子模拟

作者推荐 视频算法专题 LeetCode1223. 掷骰子模拟 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 不过我们在使用它时有个约束&#xff0c;就是使得投掷骰子时&#xff0c;连续 掷出数字 i 的次数不能超过 rollMax[i]&#xff08;i 从 1 开始编号&#xff09…

第十四届蓝桥杯第十题:蜗牛分享

问题描述 输入格式 输出格式 输出共一行&#xff0c;一个浮点数表示答案&#xff08;四舍五入保留两位小数&#xff09;。 样例输入 3 1 10 11 1 1 2 1样例输出 4.20样例说明 蜗牛路线&#xff1a;(0,0)→(1,0)→(1,1)→(10,1)→(10,0)→(11,0)(0,0)→(1,0)→(1,1)→(10,1…

Java运算符-三元运算符,这你必须得会!

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…