mysql ⽐对两个数据库表结构的⽅法
在开发及调试的过程中,需要⽐对新旧代码的差异,我们可以使⽤git/svn 等版本控制⼯具进⾏⽐对。⽽不同版本的数据库表结构也存在差异,我们同样需要⽐对差异及获取更新结构的sql语句。
例如同⼀套代码,在开发环境正常,在测试环境出现问题,这时除了检查设置,还需要⽐对开发环境与测试环境的数据库表结构是否存在差异。到差异后需要更新测试环境数据库表结构直到开发与测试环境的数据库表结构⼀致。
我们可以使⽤mysqldiff ⼯具来实现⽐对数据库表结构及获取更新结构的sql语句。
mysqldiff⼯具在mysql-utilities 软件包中,⽽运⾏mysql-utilities需要安装依赖mysql-connector-python
mysql-connector-python 安装
下载地址:
mysql-utilities 安装
下载地址:
因本⼈使⽤的是系统,可以直接使⽤brew 安装即可。
安装以后执⾏查看版本命令,如果能显⽰版本表⽰安装成功
命令:
mysql数据库的方法参数说明:
⽐对可以针对单个数据库,仅指定server1选项可以⽐较同⼀个库中的不同表结构。
brew install caskroom/cask/mysql-connector-pythonbrew install caskroom/cask/mysql-utilities
1
2mysqldiff --version MySQL Utilities mysqldiff version 1.6.5 License type : GPLv2
1
2
3mysqldiff --server1=root@host1 --server2=root@host2 --difftype=sql db1.table1:dbx .table3
1--server1 指定数据库1--server2 指定数据库2
1
2
unified (default)
显⽰统⼀格式输出
context
显⽰上下⽂格式输出
differ
显⽰不同样式的格式输出
sql
显⽰SQL转换语句输出
如果要获取sql转换语句,使⽤sql这种显⽰⽅式显⽰最适合。更多mysqldiff的参数使⽤⽅法可参考官⽅⽂档:
3.实例
创建测试数据库表及数据
执⾏差异⽐对,设置server1为主,server2要转为server1数据库表结构
执⾏mysqldiff返回的更新sql语句
再次执⾏mysqldiff进⾏⽐对,结构没有差异,只有AUTO_INCREMENT存在差异
设置忽略AUTO_INCREMENT再进⾏差异⽐对,⽐对通过--difftype 差异信息的显⽰⽅式
1--character-set 指定字符集--changes-for ⽤于指定要转换的对象,也就是⽣成差异的⽅向,默认是server1--changes-for =server1 表⽰server1要转为server2的
1
2
3
4create database testa;create database testb;use testa;CREATE TABLE `tba` ( `id` int (10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar 1
2
3
4
mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --difftype=sql testa.tba:testb.tbb;# server1 on localhost: ... connected.#
1
2
3
4
mysql> ALTER TABLE `testb`.`tbb` -> CHANGE COLUMN addtime addtime int(10) unsigned NOT NULL, -> CHANGE COLUMN age age int( 1
2
3
4
mysqldiff --server1=root@localhost --server2=root@localhost --changes-for =server2 --difftype=sql testa.tba:testb.tbb;# server1 on localhost: ... connected. 1
2
3
4
1
mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --skip-table-options --difftype=sql testa.tba:testb.tbb;# server1 on local 2
3
4
再分享⼀下我⽼师⼤神的⼈⼯智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段⼦!希望你也加⼊到我们⼈⼯智能的队伍中来!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论