建筑设计网站网址,网站网站制作400多少钱,接软件开发项目的平台,程序可以做网站吗用navicat进行mysql表结构同步 前言新增一个列然后进行表结构同步删除一个列然后进行表结构同步把Int列转成TinyInt列#xff0c;看数字溢出的情况下能不能表结构同步总结 前言
从同事那边了解到还能用navicat进行表结构同步#xff0c;他会在发布更新的时候#xff0c;直接… 用navicat进行mysql表结构同步 前言新增一个列然后进行表结构同步删除一个列然后进行表结构同步把Int列转成TinyInt列看数字溢出的情况下能不能表结构同步总结 前言
从同事那边了解到还能用navicat进行表结构同步他会在发布更新的时候直接从测试环境导出全量表然后和正式环境做表结构更新这样在不改动数据的情况下就可以更新好正式环境而不是去一个个的写ALTER更新语句。避免了遗漏。 打算做几个测试
新增一个列然后进行表结构同步删除一个列然后进行表结构同步把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 age999999 WHERE id2;然后把test库中user表的age类型改成tinyInt
ALTER TABLE user MODIFY COLUMN age TINYINT;然后再进行sql结构同步 sql语句怎么是这样的AFTER是什么
SET FOREIGN_KEY_CHECKS0;ALTER TABLE prod.user MODIFY COLUMN age tinyint NULL DEFAULT NULL AFTER name;SET FOREIGN_KEY_CHECKS1;执行之后发现出错了表结构修改不成功 然后把prod里user表里小红的age改成9再试一遍成功了 也就是在数据溢出的情况下表结构不能更改。
总结
表结构同步可以很方便的得到我们需要的变更sql语句这样在更新包的时候就方便了但是这个方法在实际工作中有人用过有人从没用过所以和同事协作的时候最好给别人发sql时发增量sql而不是导全表然后让别人做sql结构同步因为别人很可能会把sql直接执行掉而navicat导出的全表结构都是带drop if exists的会把正式环境的表删掉的就有人把这个删掉过因为沟通没沟通好一边发了全量sql另一边的同事执行了这个sql导致正式环境库被清了。很倒霉。