從官網上下載sakai-demo-2.6.2,預設採用的是記憶體資料庫hsqldb,想使用mysql。
那麼……
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