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 下数据库升级脚本的编写的更多相关文章

  1. MySQL/MariaDB/Percona数据库升级脚本

    MySQL/MariaDB/Percona数据库升级脚本截取<OneinStack>中upgrade_db.sh, 一般情况下不建议升级数据库版本,该脚本专提供给各位版本控们.为防止大版本 ...

  2. 【转】用PowerDesigner制作数据库升级脚本

    [原创]用PowerDesigner制作数据库升级脚本   很多人使用PD的时候就问有没有制作自动升级脚本的功能.其实是有的. 操作原理: 1.保存原来的版本,另存为apm的文件,生成一个Archiv ...

  3. mysql下怎样运行脚本

    假设要运行脚本: F:\hello world\niuzi.sql 第一种方法:        在命令行下(未连接数据库),输入 mysql -h localhost -u root  -p < ...

  4. 实际应用脚本备份1——Ubuntu下应用升级脚本与执行方法

    程序自动更新脚本,命名为makefile: build:run run: killall java /webapps/‘应用目录名’/ /webapps/ ‘应用目录名’/ cd /opt/apach ...

  5. Web工程软件升级之数据库升级(一)

    1. 首先检查oracle数据库版本是否正确 (可以使用方法 lsinventory来实现) 2. 检查oracle连接是否成功 3. 解压升级包,放到特定目录 4. 做升级前数据备份,备份主要业务数 ...

  6. python脚本--mysql数据库升级、备份

    在公司经常要做测试环境的升级.备份.维护:升级后台的应用,不可避免要进行数据库的升级与备份,花了一个上午琢磨了一个脚本分享给大家. ToB的业务,在做环境维护的时候,有初始化环境和增量升级的环境,在测 ...

  7. windows下数据库文件使用脚本同步到linux下的mysql数据库中

    1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...

  8. Ubuntu Server下MySql数据库备份脚本代码

    明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar. ...

  9. Windows下MySQL数据库备份脚本(一)

    说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...

随机推荐

  1. How to export Excel files in a Python/Django application

    https://assist-software.net/blog/how-export-excel-files-python-django-application CONTENTS Introduct ...

  2. 每日英语:The Upside of Favoritism

    As the head of the entertainment division of a major public-relations firm in New York, Janelle was ...

  3. python爬虫解析库之re模块

    re模块 一:什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中, ...

  4. 解决The markup in the document following the root element must be well-formed.

    出现问题的代码: <security-constraint> <web-resource-collection> <web-resource-name>Regist ...

  5. dp之01背包hdu3466(带限制的,当你所拥有的钱数大于某个限定值时才可以购买该物品)

    题意:买东西,每个东西有三个特征值,p代表价格,q代表你手中钱必须不低于q才能买这个物品,v代表得到的价值. mark:又是变种01背包,每做一个变种的,就是一种提高.. 按照q - p以由大到小的顺 ...

  6. Android——OnCreate

    OnCreate OnCreate是Android中的一个特别的函数,用来“表示一个窗口正在生成”.其不产生窗口,只是在窗口显示前设置窗口的属性如风格.位置等. 性    质 函数 特    点 不产 ...

  7. 你不知道的JavaScript学习笔记1——作用域

    处理程序三要素: 引擎:编译与执行过程. 编译器:语法分析与代码生成等. 作用域:收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权 ...

  8. HDFS Federation客户端(viewfs)配置攻略

    转自:http://dongxicheng.org/hadoop-hdfs/hdfs-federation-viewfs/ 1. HDFS Federation产生背景 在Hadoop 1.0中,HD ...

  9. 关于JDK环境变量的配置问题

    网上配置JDK环境变量的时候一直说要配置三个环境变量,什么JAVA_HOME,Path,CLASSPATH 其实是说以后如果要修改JDK的版本或者路径,只要更改JAVA_HOME就可以了,Path,C ...

  10. java----序列化与反序列化中及java序列化本质就是存储一个对象,然后在其他地方在调用它

    Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是 ...