有时候早期建的表上可能缺少主键,这样容易导致查询或者主从复制比较慢。 下面是一个小的脚本,用于找出没有主键的表。 #!.../bin/bash # 找出没有主键的表 # Date: 2017/06/05 source /etc/profile LOG="/tmp/nopk.log_$(date +%F)" user='root...' host='localhost' pass='123456' sock='/tmp/mysql.sock' MYSQL_CMD="mysql -u$user -h$host -p$pass -S$sock..." dbs=$($MYSQL_CMD 2>/dev/null -BNe "select SCHEMA_NAME from information_schema.SCHEMATA where SCHEMA_NAME...not in ('information_schema','performance_schema')") for db in $dbs; do $MYSQL_CMD information_schema
标签:VBA 有时候,工作簿中可能有大量的命名区域。...下面是一段简单的代码,它将列出工作簿中的所有定义的名称,并显示名称所指向的单元格区域。...Sub NamesList() Dim wks As Worksheet Dim nm As Name '可以修改为你想置名称和引用区域的工作表 Set wks = Sheet1...'忽略错误 On Error Resume Next '遍历名称 For Each nm In Names '在列A中列出名称 wks.Range...("A" & Rows.Count).End(xlUp)(2) = nm.Name '在列B中列出名称指向的区域 wks.Range("B" & Rows.Count)
背景 我们可能遇到过这种情况: 在公网开发时, 新增数据表非常容易, 直接登录到对应服务器的mysql / 使用Navicat访问mysql服务器....如果在第一次启动并建表成功后再次重启就会因项目在启动时执行SQL脚本并出现表已存在的错误导致项目启动失败 添加该属性之后, 则会忽略错误, 让项目初始化成功!...其他工具介绍 Flyway : 数据库版本控制管理工具 如果想要对mysql 进行更加细致的管理(版本管理), 可以通过整合 Flyway 来完成数据库部署和增量升级 Flayway是一款数据库版本控制管理工具...,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库...Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表。
最近发现一个很有用的小工具 关于 Flyway Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本。...如果数据库记录执行过的脚本记录,与项目中的sql脚本不一致,Flyway会报错并停止项目执行。 4、如果校验通过,则根据表中的sql记录最大版本号,忽略所有版本号不大于该版本的脚本。...在SpringBoot项目使用Flyway 1、初始化一个SpringBoot项目,引入MySQL数据库驱动依赖等,并且需要引入Flyway依赖: ...表 baseline-on-migrate: true 3、根据在配置文件的脚本存放路径的配置,在resource目录下建立文件夹db/migration。...启动成功后,在数据库中可以看到已按照定义好的脚本,完成数据库变更,并在flyway_schema_history表插入了sql执行记录: Copyright: 采用 知识共享署名4.0 国际许可协议进行许可
1、前言 在现代应用程序开发中,数据库的变化是一个不可避免的过程。...查看MySQL,表已经成功创建。 4.6、Flyway版本管理 除了我们创建的role和user表以外,还有flyway_schema_history表。这个是用于记录数据库迁移的历史记录和状态信息。...打开可以看到我们所执行的变迁脚本记录: 通过维护 flyway_schema_history 表,Flyway 可以在应用程序启动时检查数据库的当前状态,并确定需要应用的新迁移脚本。...5、SQL脚本文件命名规则 执行方式+版本号__sql名称.sql脚本后缀 ---//例子: V1.0.0__create_table.sql 以 V 开头的,仅执行一次。通常用于DDL表结构操作。...6、使用注意事项 迁移脚本命名规则:Flyway 依赖于迁移脚本的命名规则,通常是以版本号开头,后跟双下划线和描述性名称,例如 V1__create_table.sql。
. flyway中的SQL脚本命名 在Flyway中,SQL脚本的命名遵循一定的规则。...通常,脚本文件的命名由以下组成: 1、版本号(Version):版本号是指脚本的唯一标识符,用来指示脚本在迁移序列中的顺序。...2、描述性名称(Description):描述性名称是可选的,但它可以帮助更好地理解脚本的目的和功能。...ALL_1_1_131__xxx.sql 对应的脚本路径: E:\xdr project\mysql\all-sql 执行以下flyway命令,表示在对应的数据库中执行上述脚本 flyway -locations...: flyway migrate 最后查看mysql数据库中是否创建了脚本中的表或数据 3. flyway中设置 ${CURRENT_DATE} 为当前时间的值 执行上述脚本的时候发现一个问题,脚本中包含执行的时候报错
Flyway 可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations 可以写成 SQL 脚本,也可以写在 Java 代码中,不仅支持...快速失败:损坏的数据库或失败的迁移可以防止应用程序启动 数据库清理:在一个数据库中删除所有的表、视图、触发器,而不是删除数据库本身 # 2.2 运行原理 当 Flyway 连接数据库中的 schema...数据迁移文件名称格式为:V[version]__[name].sql。 注意:名称中[version]和[name]之间是两个下划线!...图中,数据库 flyway 中创建了 flyway_schema_history 表和 PERSON 表,数据成功迁移到指定数据库中。...解决方案先删除flyway_schema_history 表, 然后配置文件中设置 baseline-version: 0,或修改数据迁移文件版本名称,最后再次启动应用即可。
在工程的src/main/resources目录下创建db目录,在db目录下再创建migration目录 在migration目录下创建版本化的SQL脚本V1__user_version.sql DROP...此时应该多出了这两张表: image.png user表就是我们维护在SQL脚本中要创建的表 flyway_schema_history表是flyway的管理表,用来记录在这个数据库上跑过的脚本,以及每个脚本的检查依据...---- 首先,大家在开始使用Flyway之后,对于数据库表接口的变更就要关闭这几个途径: 直接通过工具登录数据去修改表结构 已经发布的sql脚本不允许修改 ---- 正确的表结构调整途径:在flyway...这样可以获得几个很大的好处: 脚本受Git版本管理控制,可以方便的找到过去的历史 脚本在程序启动的时候先加载,再提供接口服务,一起完成部署步骤 所有表结构的历史变迁,在管理目录中根据版本号就能很好的追溯...再查看一下数据库中的内容: image.png user表中已经有了Address列 image.png Flyway管理表中已经有新脚本的加载记录 源码地址:传送门 欢迎留言分享下你们的数据库版本管理方式
Flyway正是这么一款工具,通过Flyway和SpringBoot结合使用,在应用启动时就可以自动升级数据库表结构,非常方便,推荐给大家!...相关概念 工作原理 使用Flyway时我们需要编写好数据库迁移的SQL脚本,比如 V1__Initial_Setup.sql中初始化了三种表,V2__First_Changes.sql中又新增了两种表。...当我们使用Flyway进行数据库迁移时,Flyway会根据flyway_schema_history表中的记录,自行决定需要执行哪些SQL脚本,从而实现数据库迁移。 ? 数据库迁移搞炸了!...在\sql目录下添加SQL执行脚本,给ums_admin表添加一些数据,执行脚本为V1.0.2__Add_ums_admin.sql; INSERT INTO ums_admin (username,...: true # 设置Flyway的SQL脚本路径 locations: classpath:db/migration # 设置版本信息控制表名称,默认flyway_schema_history
Flyway 的工作机制 Flyway 需要在 DB 中先创建一个 metadata 表 (缺省表名为 flyway_schema_history), 在该表中保存着每次 migration (迁移)的记录...flyway_schema_history 这个 metadata 表, 在执行 flyway migrate 命令之前, 必须先执行 flyway baseline 命令 # 设置为 true...脚本名称为 V1.0.1__Add_table_user.sql 。SQL 脚本的位置在配置的 spring.flyway.locations 下。...打开 H2 数据库控制台 http://localhost:8080/h2-console ,在 JDBC URL 一栏粘贴 jdbc:h2:file:D:/h2/flyway;MODE=MySQL;DATABASE_TO_LOWER...这里总结了一些在实际开发中的使用经验: 生产务必禁 spring.flyway.cleanDisabled=false 。 尽量避免使用 Undo 模式。
完了之后,可以不用添加额外配置,大家只需要在本地 MySQL 中创建一个空的 vhr 数据库即可,然后直接启动微人事项目,项目启动成功后,我们查看启动日志: ?...从这段启动日志中,我们可以看到 Flyway 的执行信息,数据库脚本的执行执行,同时这里还说了,Flyway 还给创建了一个 flyway_schema_history 表,这个表用来记录数据库的更新历史...表中的对应记录,那么项目启动时,这个脚本就会被执行了。...所有的脚本,一旦执行了,就会在 flyway_schema_history 表中有记录,如果你不小心搞错了,可以手动从 flyway_schema_history 表中删除记录,然后修改 SQL 脚本后再重新启动...spring.flyway.table:配置数据库信息表的名称,默认是 flyway_schema_history。
在项目迭代开发中,难免会有更新数据库 Schema 的情况,比如添加新表、在表中增加字段或者删除字段等,那么当我对数据库进行一系列操作后,如何快速地在其他同事的电脑上同步?...用通俗的话讲,Flyway 可以像 Git 管理不同人的代码那样,管理不同人的 sql 脚本,从而做到数据库同步,更多的信息可以在 Flyway 的官网上进行阅读学习。...,Flyway 监测到需要运行版本脚本来初始化数据库,因此执行了 V1.0__init_db.sql 脚本,从而创建了 user 表,另外还自动创建了 flyway_schema_history 表,用于记录所有版本演化和状态...发现 sql 脚本中的数据也插入成功了。...会给脚本计算一个 checksum 保存在数据库中,用于在之后运行过程中对比 sql 文件是否有变化,如果发生了变化,则会报错,也就防止了误修改脚本导致发生问题。
Oracle数据库中自带的4张表: dept、emp、bonus和salgrade是练习SQL查询的经典案例表,本文提供在MySQL中建这4张表的SQL语句 1....创建dept表 CREATE TABLE `dept`( `deptno` INT(2) NOT NULL, `dname` VARCHAR(14), `loc` VARCHAR...创建emp表 CREATE TABLE `emp` ( `empno` int(4) NOT NULL PRIMARY KEY, `ename` VARCHAR(10), `...创建bonus表 CREATE TABLE `bonus`( `ename` VARCHAR(10), `job` VARCHAR(9), `sal` INT, `comm...创建salgrade表 CREATE TABLE `salgrade` ( `grade` int, `losal` int, `hisal` int ) ENGINE
迁移数据库可以说是日常工作中的家常便饭,不过,如果一不小心把数据库搞炸了,那就麻烦大了(搞不好就得背锅了)。随着数据量的逐渐增加、表结构的改动,数据库各类迁移、升级是势在必行。...它就会去查找schema历史表,如果此时数据库是空的,FlyWAY会自己创建一张历史表,然后现在就有了一个仅包含空表flyway_schema_history(默认)的数据库。 ?...(分隔符):使用双下划线分隔符 Description(描述):用于描述迁移脚本的说明性文字 Suffix(后缀):.sql文件 在sql目录下面添加一个测试sql脚本,这里是一个简单的创建表的语句。...还是在sql目录下创建脚本V1.0.1__add_data.sql [root@centos7 ~]# cat flyway-7.11.0/sql/V1.0.1__add_data.sql INSERT...其它集成 Flyway也提供了Maven插件,也可以在Maven中使用这个工具,添加maven依赖,在pom.xml文件中配置连接数据的信息。 <!
经常会踫到这样的场景需求:自定义时间从MySql流水月表中SELECT出来数据到excel报表文件中,所以自己写了这个shell脚本来处理。...1 实现思路 代码比较简单,主要使用了mysql -e执行SQL语句,然后重定向到txt文件中。...2 脚本代码 鉴于数据量比较大,我们的shell脚本需要考虑MySQL执行INSERT的效率,所以采用了对次数取模拼接多个VALUES的值来实现。.../bin/bash # FileName: exportmysqlshell1.sh # Description: 使用shell脚本导出MySql月表数据到EXCEL中 # Simple...Github了,地址是https://github.com/vfhky/shell-tools,以后脚本的更新或者更多好用的脚本也都会加入到这个工程中。
2、Flyway简介 flyway 的官网:Homepage - Flyway flyway会对每次执行过sql脚本保存到flyway_schema_history中,在数据库中将保存sql脚本的版本号和对...如果以前的版本号脚本已经执行过就不会执行,如果以前版本的sql脚本已经被修改在执行的过程中则会报错。对flyway的详细描述与介绍可以查看flyway的官网。...如果校验通过,则根据表中的sql记录最大版本号,忽略所有版本号 不大于该版本的脚本。再按照版本号从小到大,逐个执行其余脚本。 4、添加Flyway依赖和插件 引入flyway插件 <!...实现在非空数据库新建metaData flyway_schema_history表,并把Migrations应用到该数据库;也可以在已有表格的数据库中添加metaData数据表。...6.5、info 查看当前已迁移脚本信息(flyway_schema_history表) 6.6、undo 这个命令不要用,在社区版的flyway是残废和bug的,回滚数据自己靠自己。
Flyway 可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations 可以写成 SQL 脚本,也可以写在 Java 代码中,不仅支持...Flyway运行原理 当我们运行配置使用Flyway的应用程序时,会自动在配置数据源的数据库内创建一个名为 flyway_schema_history的表,该表内存放了数据库的历史记录信息。...db.migration目录是SpringBoot在整合Flyway时默认读取版本脚本的目录,我们可以在application.yml配置spring.flyway.locations参数进行修改。...测试 当我们启动项目时,会自动比对脚本的版本,在db.migration目录内找到V1.1__add_logging.sql为最高版本,拿着1.1再去flyway_schema_history表内执行成功最大的版本比对...flyway_schema_history表 每次启动项目如果存在可更新的脚本信息,执行完成后会自动在flyway_schema_history表内添加一条记录。
在实现这个例子的时候,我们事先在MySQL中创建了用户表。...创建表的过程我们在实际开发系统的时候会经常使用,但是一直有一个问题存在,由于一个系统的程序版本通过git得到了很好的版本控制,而数据库结构并没有,即使我们通过Git进行了语句的版本化,那么在各个环境的数据库中如何做好版本管理呢...下面我们就通过本文来学习一下在Spring Boot中如何使用Flyway来管理数据库的版本。 Flyway简介 ?...application.properties文件中配置Flyway要加载的SQL脚本位置。...由于在第四步的时候,初始化脚本已经执行过,所以这次执行就没有再去执行 V1__Base_version.sql脚本来重建user表。
Git已经帮助我们完成了代码的多版本管理,那么数据库中的表该如何做好版本控制呢? 今天我们就来介绍在Spring Boot中使用Flyway来管理数据库版本的方法。...下面我们具体说说在Spring Boot应用中的应用,如何使用Flyway来创建数据库以及结构不一致的检查。...此时应该多出了这两张表: user表就是我们维护在SQL脚本中要创建的表 flyway_schema_history表是flyway的管理表,用来记录在这个数据库上跑过的脚本,以及每个脚本的检查依据。...首先,大家在开始使用Flyway之后,对于数据库表接口的变更就要关闭这几个途径: 直接通过工具登录数据去修改表结构 已经发布的sql脚本不允许修改 正确的表结构调整途径:在flyway脚本配置路径下编写新的脚本...这样可以获得几个很大的好处: 脚本受Git版本管理控制,可以方便的找到过去的历史 脚本在程序启动的时候先加载,再提供接口服务,一起完成部署步骤 所有表结构的历史变迁,在管理目录中根据版本号就能很好的追溯
、预发环境、生产环境)中如何确保其 SQL 脚本的最新性和正确性?... flyway-core 此外,我们在 application.yml 中配置相关选项。...这张表是 Flyway 的元数据表, 其保存着每次 migration 的记录, 记录包含 migration 脚本的版本号和 SQL 脚本的 checksum 值。...当一个新的 SQL 脚本被扫描到后, Flyway 解析该 SQL 脚本的版本号, 并和 metadata 表对比, 如果该 SQL 脚本版本更新的话, 将在指定的 DB 上执行该 SQL 文件, 否则跳过该...相关推荐: 《颠覆微服务认知:深入思考微服务的七个主流观点》 《MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?》
领取专属 10元无门槛券
手把手带您无忧上云