web应用oracle迁移mysql开发版(四)
收尾工作
?
回想一下,我们的去O工作完成了么?还没有,我们还在单元测试的阶段。
这时候需要做2个工作:
1、找到开发线上的data-source.xml,更换成单元测试的“样子”类似下面的:
?
?
2、更改antx.properties里的配置项。(发布时需要SA帮忙把配置项更新成mysql的)
?
注:这里的antx.properties是一个属性文件,公司web框架的一个配置文件,用于初始化信息用的。每个公司可能不同,也有可能没有这个配置文件,而是写死在xml文件里的。
?
一些额外的注意点?
1、建表语句
在PLSQL中我们导出表结构是这样的就OK了。
异常说明:Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost
百度了一下,有个人也遇见了这个异常,解决方法就是添加这三个配置项?
3、关于org.springframework.test.AbstractTransactionalDataSourceSpringContextTests的单元测试。
还记得建表时的ENGINE=InnoDB么?当我们使用spring的单元测试时,我们如果没有指定引擎会导致事务无法回滚。
引用iteye里的答案:
“没有指定表的引擎. 而Mysql5.x在linux下的默认引擎是MyISAM, 而不是期望的InnoDB, 所以建立数据库表时如果没有指定引擎, 那么表的引擎MyISAM, 从而导致不支持事务. 解决办法是把所有的表的引擎改为InnoDB后, 事务正常回滚了.”?
4、关于利用sql脚本来批量初始化数据库
有一些web程序,在做biz层的单元测试时,会利用一个统一的sql脚本来批量初始化数据,来达到避免在单元测试中赘述DAO的insert语句。
在你的初始化sql脚本中,注意不要将ID设置成0,否则每一次执行单元测试时,都会向表中插入一条数据。而在mysql的命令行下,即使设置id为0也不会影响对数据库的插入动作。