playframework数据库管理工具 笔记(2)
来源:互联网 发布:mac淘宝不能对话 编辑:程序博客网 时间:2024/06/06 21:11
# --- !Ups 标记的sql 表示正常状态下会执行的脚本
# --- !Downs 标记的sql表示异常时会执行的脚本(这里一般写成和上面对应的回滚sql)
1.处理并发的evolution script
现在有两个程序员A和B,他们同时提交了2.sql:
# create table User# --- !UpsCREATE TABLE qic_db.User ( id bigint(20) NOT NULL AUTO_INCREMENT, email varchar(255) NOT NULL, password varchar(255) NOT NULL, fullname varchar(255) NOT NULL, isAdmin boolean NOT NULL, PRIMARY KEY (id));# --- !DownsDROP TABLE qic_db.User;
# add anther column to User6# --- !UpsALTER TABLE User6 ADD company varchar(255);# --- !DownsALTER TABLE User6 drop company;那么A在更新的时候就会要求merge it ,现在他只需要
# create table User# ADD anther column to User6# --- !UpsCREATE TABLE qic_db.User ( id bigint(20) NOT NULL AUTO_INCREMENT, email varchar(255) NOT NULL, password varchar(255) NOT NULL, fullname varchar(255) NOT NULL, isAdmin boolean NOT NULL, PRIMARY KEY (id));ALTER TABLE User6 ADD company varchar(255);# --- !DownsDROP TABLE qic_db.User;ALTER TABLE User6 drop company;实验表明:play先会回滚A的2.sql ,执行
DROP TABLE qic_db.User;
然后再执行合并后的2.sql。
2.处理错误的evolution script
当出现了一个错误的evolution script 3.sql:
# Add another column to User # --- !UpsALTER TABLE User ADD company varchar(255); # --- !DownsALTER TABLE User DROP company;Play 会提示你
你需要修改3.sql,点击”make it resolved“然后执行你修改过的sql。
3.在prod(生产模式)下的evolution commands
在prod环境中 如果目录下有evolution script 没有被执行过,运行run命令时play会提示
~ _ _ ~ _ __ | | __ _ _ _| |~ | '_ \| |/ _' | || |_|~ | __/|_|\____|\__ (_)~ |_| |__/ ~~ play! master-localbuild, http://www.playframework.org~ framework ID is prod~~ Ctrl+C to stop~ 13:33:22 INFO ~ Starting ~/test13:33:22 INFO ~ Precompiling ...13:33:24 INFO ~ Connected to jdbc:mysql://localhost13:33:24 WARN ~ 13:33:24 WARN ~ Your database is not up to date.13:33:24 WARN ~ Use `play evolutions` command to manage database evolutions.13:33:24 ERROR ~ @662c6n234Can't start in PROD mode with errors Your database needs evolution!An SQL script will be run on your database. play.db.Evolutions$InvalidDatabaseRevisionat play.db.Evolutions.checkEvolutionsState(Evolutions.java:323)at play.db.Evolutions.onApplicationStart(Evolutions.java:197)at play.Play.start(Play.java:452)at play.Play.init(Play.java:298)at play.server.Server.main(Server.java:141)Exception in thread "main" play.db.Evolutions$InvalidDatabaseRevisionat play.db.Evolutions.checkEvolutionsState(Evolutions.java:323)at play.db.Evolutions.onApplicationStart(Evolutions.java:197)at play.Play.start(Play.java:452)at play.Play.init(Play.java:298)at play.server.Server.main(Server.java:141)
要求你先执行 play evolutions
$ play evolutions~ _ _ ~ _ __ | | __ _ _ _| |~ | '_ \| |/ _' | || |_|~ | __/|_|\____|\__ (_)~ |_| |__/ ~~ play! master-localbuild, http://www.playframework.org~ framework ID is gbo~~ Connected to jdbc:mysql://localhost~ Application revision is 3 [15ed3f5] and Database revision is 0 [da39a3e]~~ Your database needs evolutions! # ---------------------------------------------------------------------------- # --- Rev:1,Ups - 6b21167 CREATE TABLE User ( id bigint(20) NOT NULL AUTO_INCREMENT, email varchar(255) NOT NULL, password varchar(255) NOT NULL, fullname varchar(255) NOT NULL, isAdmin boolean NOT NULL, PRIMARY KEY (id)); # --- Rev:2,Ups - 9cf7e12 ALTER TABLE User ADD age INT;CREATE TABLE Post ( id bigint(20) NOT NULL AUTO_INCREMENT, title varchar(255) NOT NULL, content text NOT NULL, postedAt date NOT NULL, author_id bigint(20) NOT NULL, FOREIGN KEY (author_id) REFERENCES User(id), PRIMARY KEY (id)); # --- Rev:3,Ups - 15ed3f5 ALTER TABLE User ADD company varchar(255); # ---------------------------------------------------------------------------- ~ Run `play evolutions:apply` to automatically apply this script to the db~ or apply it yourself and mark it done using `play evolutions:markApplied`~
如果你想让play执行你的sql脚本请输入:play evolutions:apply
如果你想手动执行,play会自动忽略没有执行过sql脚本,你需要输入:play evolutions:markApplied
如果有任何错误需要回滚到以前的状态 你需要输入:play evolutions: resolve
值得一提的是:如果你删除了之前执行过的 evolution script,再次执行脚本命令时,play会自动执行被删除的sql #---! Downs下的命令
- playframework数据库管理工具 笔记(2)
- playframework 数据库管理工具 笔记(1)
- playframework 数据库管理工具 笔记(3)
- playframework之连接MySQL数据库
- PlayFramework
- playframework
- playframework
- Deltasql 数据库版本管理工具学习笔记
- DB Migration 数据库版本管理工具 学习笔记
- 数据库管理工具
- DbVisualizer数据库管理工具(支持大部分数据库)
- playframework中用jdbc进行数据库操作
- playframework 一步一步来 之连接MySQL数据库
- 如何使用playframework连接MySQL数据库
- PlayFramework Play2 Java 关于解决在eclipse建立 views html 模板无法提示 笔记(2)
- MySQL(3):可视化数据库管理工具
- MySQL笔记-2-函数,存储引擎,管理工具
- playframework 2 之页面界面标签、参数
- vc++经典技巧总结
- Linux: Linux平台上类似CPU-Z的开源工具
- 总结python+Django+mysql项目遇到的一些问题
- rootfs文件系统的简单分析
- 归并树与划分树
- playframework数据库管理工具 笔记(2)
- 类与类之间的关系:继承,组合还是聚合?
- 字符串——Brute Force实现
- Openwrt(linux)启动服务后台进程守护进程
- sd卡烧写嵌入式uboot/kernel及rootfs
- iOS 5解决Could not instantiate class named NSLayoutConstraint问题
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- "error: failed to attach to process ID 0"问题解决
- Android 定时器实现的几种方式和removeCallbacks失效问题详解