日期:2014-05-16  浏览次数:20493 次

sakai中使用mysql数据库
从官网上下载sakai-demo-2.6.2,默认采用的是内存数据库hsqldb,想使用mysql。
那么……
注意,这一步多余,只需要在sakai配置中指明数据库名称,就自动创建了。
1、mysql中的表,字段,数据什么的是怎么来的?我在官网上找了番,没有发现mysql的备份文件,ddl什么的,只有一些数据库升级文件什么的,难道我装2.6.2需要从1.5开始安装么..囧。
方案一:下载sakai源代码,搜索所有的*.sql文件,找出2.6.2版本的数据库文件(没有升级标记的文件),然后导入数据库。不推荐,这种方式导入的文件可能不全,而且数据库之间有依赖,出错很郁闷,反正我是弄一半放弃了。
方案二:将hsqldb数据库转化为mysql 数据库。这个是最妙的,因为hsqldb中是sakai实时运行中的所有数据,不用担心数据是否齐全的问题;而且有工具MySQL Migration Toolkit可以直接转换,无痛操作…网上有详细的教程http://confluence.atlassian.com/display/DOC/Migrating+from+HSQLDB+to+MySQL
要提醒的是:Source Database中connection String的值为sakai.properties中某个字段,比如:url@javax.sql.BaseDataSource=jdbc:hsqldb:file:${sakai.home}db/sakai.db,注意不要在.db后面加后缀了,虽然你疑问,sakai.db根本不是具体的文件(是的,他仅仅是一个前缀)
2、设置sakai加载mysql数据库。
注释掉url@javax.sql.BaseDataSource=jdbc:hsqldb:file:${sakai.home}db/sakai.db;hsqldb.default_table_type=cached
添加下面命令即可:
#username@javax.sql.BaseDataSource=sakai
#password@javax.sql.BaseDataSource=!@#$%)(*&

#vendor@org.sakaiproject.db.api.SqlService=mysql
#driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
#hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
#url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/sakai?useUnicode=true&characterEncoding=UTF-8
#validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
#defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED
1 楼 liuyf 2010-04-12  
其实第一步是多余的。只需要在配置文件中指定数据库名称就行了。sakai发现没有表会自动构建。