当前位置: 首页 > news >正文

江苏州 网站制作精准营销及推广

江苏州 网站制作,精准营销及推广,做网站用到的软件,营销网站建设专业服务公司文章目录 业务场景参数介绍initSqlsbaselineOnMigratebaselineVersiontargetvalidateOnMigrate SQL注意事项 业务场景 对于生产环境,随着项目版本迭代,数据库结构也会变动。如果一个项目在多个地方实施部署,且版本不一致,就需要一…

文章目录

    • 业务场景
    • 参数介绍
      • initSqls
      • baselineOnMigrate
      • baselineVersion
      • target
      • validateOnMigrate
    • SQL注意事项

业务场景

  • 对于生产环境,随着项目版本迭代,数据库结构也会变动。如果一个项目在多个地方实施部署,且版本不一致,就需要一个方法来管理数据库结构。
  • flyway是个简单易用的轻量级数据库版本管理工具,可以让我们像使用 Git 管理代码一样,对数据库版本和变动,进行详细的记录
  • 使用flyway时,我们按照版本整理数据库SQL脚本,当发布新的项目版本时,同时发布SQL变动文件
  • 举例说明,对于第一个正式版本,我们的SQL文件包含数据库表初始化SQL,数据的初始化SQL;对于第二个版本,我们需要数据库表结构变动的SQL。每一个SQL文件都带有版本号,在各地实施时,会根据基础版本号和schema表里记录的情况,自动进行数据库结构校验和更新,保持表结构一致。
  • 对于新部署的项目,没有数据,可以不指定初始版本,直接从第一个数据库脚本开始执行,创建数据库,初始化数据,一直更新到需要的版本
  • 对于已经在运行的项目,数据库是已有的,里面也有客户的数据,不需要走创建数据库和初始化数据的过程。这时候需要设置基础版本的版本号,在进行表结构更新时,就会忽略之前的版本的SQL文件,只执行需要更新的SQL文件

参数介绍

  • 我的flyway的在spring boot应用里的application.yml配置
spring:datasource:type: com.zaxxer.hikari.HikariDataSourceurl: jdbc:postgresql://192.168.x.xx:5432/coreusername: xxxpassword: xxxxxxxhikari:poolName: Hikariauto-commit: falseflyway:enabled: trueschemas: publicencoding: UTF-8locations: classpath:db/migrationsql-migration-prefix: Vsql-migration-separator: __sql-migration-suffixes: .sqltable: flyway_schema_historybaseline-on-migrate: truevalidate-on-migrate: truebaseline-version: 2.0.0.1
  • enabled:默认true,是否启用flyway,设置为true,flyway才会生效
  • locations:默认classpath:db/migration,迁移脚本的位置
  • schemas:由 Flyway 管理的schema的名称(区分大小写)
  • encoding:默认UTF_8,SQL 迁移的编码
  • table:默认flyway_schema_history,Flyway 将使用的架构历史表的名称。
  • sqlMigrationPrefix:默认V,SQL 迁移的文件名前缀
  • sqlMigrationSuffixes:默认.sql,SQL 迁移的文件名后缀
  • sqlMigrationSeparator:默认__,SQL 迁移的文件名分隔符
  • repeatableSqlMigrationPrefix:默认R,可重复 SQL 迁移的文件名前缀
  • cleanDisabled:是否禁用数据库清理
  • cleanOnValidationError:验证错误时是否自动调用clean
  • baselineVersion:默认1,执行基线时用于标记现有模式的版本
  • target:应考虑迁移到的目标版本
  • initSqls:获取连接后立即执行初始化连接的 SQL 语句
  • baselineOnMigrate:迁移非空schema时是否自动调用基线
  • validateMigrationNaming:默认false,是否验证脚本不遵守正确命名约定的迁移和回调
  • validateOnMigrate:默认true,执行迁移时是否自动调用validate
  • 下面对于我有使用经验的,个人认为比较重要的几个参数,详细讲一下。

initSqls

  • 对于初次部署的系统,可以使用flyway新建表和初始化数据,但是没法新建库
  • 一开始想用init-sqls参数建库,发现不行
  • 一方面,在数据库连接参数url里就要指定库名了,如果这时候库还没创建,连接这个库的时候就会报错了,也不会进行下去
  • 另一方面,postgresql不支持create xx if not exists的用法,没法判断库不存在再去创建
  • initSqls参数,可以指定一些SQL语句,获取连接后立即执行初始化连接的 SQL 语句
  • 我没有需要在连接后执行SQL语句的场景,暂时未使用此参数

baselineOnMigrate

  • baseline-on-migrate参数,迁移非空schema时是否自动调用基线,主要是指数据库已存在,已经有数据库表和数据,此时开始使用flyway管理数据库的场景(此时flyway_schema_history表不存在)
  • schema(一般默认都是public)为空时,baseline-on-migrate参数就没有意义了,为空就直接走创建过程了,维护表结构时,会首先创建flyway_schema_history表,再去逐个执行SQL脚本
  • 在判断schema(一般默认都是public)非空时,设值为false,flyway_schema_history表不存在,就返回报错
    在这里插入图片描述
  • 在判断schema(一般默认都是public)非空时,设置为true,会去创建flyway_schema_history表,然后按照版本号逐个执行SQL文件

baselineVersion

  • baseline-version参数,指定基础版本,只有大于这个版本的SQL文件才会被检查和执行
  • 需要注意的是,只有在flyway_schema_history表不存在时,baseline-version参数才会生效
    在这里插入图片描述
  • flyway_schema_history表存在时,会根据表里的记录继续进行升级,baseline-version参数没有意义
  • 当schema表存在但表内容为空时,baseline-version参数同样没有意义,会根据locations的SQL文件,逐个版本升级,直到最新或者target版本
    在这里插入图片描述

target

  • 默认是迁移到最新版本,不配置时,就会根据locations的SQL文件,逐个版本升级,一直到全部文件执行完成
  • 如果指定版本号,则迁移到该版本,后续版本不升级
    在这里插入图片描述

validateOnMigrate

  • 默认true,执行迁移时自动调用validate,对SQL文件进行校验
  • 如果已有flyway_schema_history,会对里面的记录逐个校验checksum字段的值
  • 每个文件,会根据文件信息,生成一个 checksum 值,flyway在SQL文件执行时会在表里插入一条记录,包含checksum值
  • 当已经同步过的SQL文件发生变动时, checksum 值就会和数据库里的记录对应不上,就会校验失败
    在这里插入图片描述

SQL注意事项

  • 保证SQL能正确执行,可以多加些判断
  • 建表语句,新增字段的语句,可以多加一个IF NOT EXISTS
CREATE TABLE IF NOT EXISTS "public"."sys_log"
("id"      int8 NOT NULL,"op_desc" varchar(255) COLLATE "pg_catalog"."default","op_time" timestamp(6),CONSTRAINT "sys_log_pkey" PRIMARY KEY ("id")
);ALTER TABLE "public"."sys_setting" ADD COLUMN IF NOT EXISTS "enable_scheme_review" bool NOT NULL DEFAULT false;
  • 删除语句,可以多加一个IF EXISTS
ALTER TABLE "public"."wireless_security" DROP COLUMN IF EXISTS "dev_no";
ALTER TABLE "public"."bayonet" DROP CONSTRAINT IF EXISTS "fk_bayonet__intersection_id";
  • postgresql不支持create xx if not exists的用法,如果是增加外键、唯一键等操作,可以尝试先删除后新增,保证SQL一定执行成功
ALTER TABLE "public"."vip_traffic_movement" DROP CONSTRAINT IF EXISTS "fk_vip_traffic_movement__vip_route_config_id";
ALTER TABLE "public"."vip_traffic_movement" ADD CONSTRAINT "fk_vip_traffic_movement_vip_route_config_id" FOREIGN KEY ("vip_route_config_id") REFERENCES "public"."vip_route_config" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
http://www.r43.cn/news/150208.html

相关文章:

  • wordpress 页面宽度游戏优化大师下载安装
  • 去哪个网站做兼职0元入驻的电商平台
  • 外贸做哪个网站平台全网营销整合营销
  • 手机网站开发软件seo推广案例
  • 精品网站建设费用磐石网络免费网站大全
  • 工厂的网站在哪里做的网站友情链接的好处
  • 找人做网站要准备什么软件百度怎么推广自己的信息
  • 龙岩网站制作公司seo查询seo优化
  • 深圳做微信商城网站搜索引擎排名影响因素有哪些
  • it网上做笔记的网站网站关键词如何优化
  • 苏宁推客如何做网站北京做网站推广
  • 新加坡网站建设公司百度推广一个关键词多少钱
  • 沈阳微网站seo关键词是什么意思
  • 柳州中小企业网站建设网页设计页面
  • 重庆做网站建设哪家好上海网站排名推广
  • 网站制作一般要几天云南网站建设公司哪家好
  • 唐山网站建设最好的微信怎么推广引流客户
  • dede网站移动端怎么做app推广方案
  • 登不上学校的网站该怎么做微信运营方案
  • 泗阳疫情最新情况抖音seo优化怎么做
  • 阿里云访问wordpressseo运营
  • 苏州网站开发电话域名流量查询工具
  • 做商品网站的教学视频bt最佳磁力搜索引擎吧
  • 电子商务网站建设与管理基础做百度推广需要什么条件
  • 浏览器什么网站都能打开的个人网站模板
  • 合肥市建设工程市场信息价网站新网站怎么做推广
  • ecshop手机网站竞价托管服务多少钱
  • 荆州哪里有做网站的seo全国最好的公司
  • 网站建设中数据库的维护论文网络营销策略的特点
  • 永久免费的财务软件seo快速排名优化方法