mysql 下数据库升级脚本的编写
1 升级时必须得存储过程
/**/
drop procedure if exists pro_upgrade;
DELIMITER //
CREATE DEFINER=`root`@`%` PROCEDURE `pro_upgrade`(
exec_boolen int ,
sql_str VARCHAR(256)
)
BEGIN
# 执行sql 操作
IF sql_str <>''
THEN
set @sql1 = sql_str;
set @bexec = exec_boolen; if @bexec = 0
then
PREPARE execsql FROM @sql1;
EXECUTE execsql ;
end if;
END IF;
END//
DELIMITER ;
这个存储过程主要是校验表字段是否存在
2 判断库是否存在
CREATE DATABASE IF NOT EXISTS `fqmanagesysdb` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `fqmanagesysdb`;
3 判断表是否存在创建
CREATE TABLE IF NOT EXISTS `userinfo` (
`id` int(11) NOT NULL DEFAULT '',
`user_name` varchar(255) NOT NULL,
`user_pwd` varchar(255) NOT NULL,
`user_type` tinyint(4) NOT NULL DEFAULT '',
`Power` int(11) NOT NULL DEFAULT '',
`DeptID` int(11) NOT NULL DEFAULT ''
PRIMARY KEY (`user_name`,`user_type`),
KEY `userinfo_user_name_index` (`user_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4 判断视图是否存在的
DROP VIEW IF EXISTS `allcode_view`;
5 判断存储过程是否存在
drop procedure if exists procedure_split;
6 插入初始化数据
INSERT INTO `userinfo` (id,user_name,user_pwd,user_type,Power,DeptID) select '', 'admin', 'admin', '', '', '' from DUAL where not exists (select * from userinfo where user_name = 'admin');
7 判断触发器是否存在
DROP TRIGGER IF EXISTS `trigger_delete_fucode`;
8 向表里添加新的字段
SELECT count(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='fqmanagesysdb' AND table_name='userinfo' AND COLUMN_NAME='BrokerID' into @ret;
call pro_upgrade(@ret,'alter table userinfo ADD COLUMN BrokerID varchar(255) NOT NULL ');
这里用到了上面的存储过程,mysql里面在非存储过程里面不支持if not exists的判断
9 其他
待补充……
mysql 下数据库升级脚本的编写的更多相关文章
- MySQL/MariaDB/Percona数据库升级脚本
MySQL/MariaDB/Percona数据库升级脚本截取<OneinStack>中upgrade_db.sh, 一般情况下不建议升级数据库版本,该脚本专提供给各位版本控们.为防止大版本 ...
- 【转】用PowerDesigner制作数据库升级脚本
[原创]用PowerDesigner制作数据库升级脚本 很多人使用PD的时候就问有没有制作自动升级脚本的功能.其实是有的. 操作原理: 1.保存原来的版本,另存为apm的文件,生成一个Archiv ...
- mysql下怎样运行脚本
假设要运行脚本: F:\hello world\niuzi.sql 第一种方法: 在命令行下(未连接数据库),输入 mysql -h localhost -u root -p < ...
- 实际应用脚本备份1——Ubuntu下应用升级脚本与执行方法
程序自动更新脚本,命名为makefile: build:run run: killall java /webapps/‘应用目录名’/ /webapps/ ‘应用目录名’/ cd /opt/apach ...
- Web工程软件升级之数据库升级(一)
1. 首先检查oracle数据库版本是否正确 (可以使用方法 lsinventory来实现) 2. 检查oracle连接是否成功 3. 解压升级包,放到特定目录 4. 做升级前数据备份,备份主要业务数 ...
- python脚本--mysql数据库升级、备份
在公司经常要做测试环境的升级.备份.维护:升级后台的应用,不可避免要进行数据库的升级与备份,花了一个上午琢磨了一个脚本分享给大家. ToB的业务,在做环境维护的时候,有初始化环境和增量升级的环境,在测 ...
- windows下数据库文件使用脚本同步到linux下的mysql数据库中
1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...
- Ubuntu Server下MySql数据库备份脚本代码
明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar. ...
- Windows下MySQL数据库备份脚本(一)
说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...
随机推荐
- "围观"设计模式(2)--里氏替换原则(LSP,Liskov Substitution Principle)
在面向对象的程序设计中.里氏替换原则(Liskov Substitution principle)是对子类型的特别定义.它由芭芭拉·利斯科夫(Barbara Liskov)在1987年在一次会议上名为 ...
- makefile之wildcard函数
$(wildcard PATTERN) 函数功能: 获取匹配 PATTERN 的所有对象 返回值: 使用空格分割的匹配对象列表 1. 示例1
- Nmap速查手册
http://drops.wooyun.org/tips/4333 From:http://highon.coffee/docs/nmap/ 0x00:说明 只是一个快速查询手册,理论的东西都没有补充 ...
- python操作word
python教程(百度经验) Python 操作Word(Excel.PPT等通用) import win32comfrom win32com.client import Dispatch, co ...
- am335x alsa codec调试
root@phyCORE-AM335x:~ aplay -l**** List of PLAYBACK Hardware Devices ****card 0: audio [PCM051 audio ...
- Linux - Windows10连接linux服务器
当我们通过windows连接服务器时,大多数用的是ssh客户端软件,推荐使用ssh,安全系数比较高.下面介绍用telnet连接服务器. 客户端:C:\Users\dell>systeminfo主 ...
- 如何实现Asp与Asp.Net共享Session
<iframe align="top" marginwidth="0" marginheight="0" src="http ...
- 隐马尔科夫模型(hidden Markov model, HMM)
- 003杰信-在jsp页面输入数据,然后在oracle数据库中插入factory数据,当字段允许为空时要特殊处理
本博客的内容全部来自于传智播客,特在此说明. 业务要求如下:在jsp页面(jFactoryCreate.jsp)上输入数据时,转到后台,并输入到数据库. jFactoryCreate.jsp页面:
- This表示当前对象
This表示当前对象. Public void printNum(){ Int number=40: System.out.println(this.number); } 此时打印的是实例变量,而非局 ...