Alfresco auf Version 3.4.c updaten
Eine der Neuerung in Alfresco 3.4.c ist, dass keine MySQL-Datenbankinstallation im Installations-Bundel mehr mitgeliefert wird. D.h. wer nicht auf eine Postgre-Datenbank migrieren möchte, muss sich ab sofort um eine eigene Installation von MySQL kümmern. Dabei stellt sich allerdings der Versionssprung der mitgelieferten Datenbank MySQL4 auf eine aktuelle Installation von MySQL5 als Stolperstein heraus. In MySQL5 sind Datenbanknamen case-sensitiv. Dadurch erkennt Alfresco einige Tabellen nicht mehr, da diese in früheren Versionen mit Kleinschreibung angelegt wurden, aktuell aber in Großschreibung benötigt werden.
Upgrade-Prozedur
Die folgende Anleitung hilft beim beheben des Konflikts:
- Erstellen Sie einen Dump Ihrere aktuellen MySQL-Datenbank.
- Stoppen Sie Alfresco und führen Sie das Update wie gewohnt durch (Alfresco noch nicht starten - wird mit einer Fehlermeldung abbrechen).
- Installieren Sie MySQL lokal.
- Führen Sie die unten angebotene Datenbank-Initialisierungs-Queries zum Erstellen der Datenbank aus.
- Importieren Sie die Datenbank aus dem am Anfang erstellen SQL-Dump.
- Führen Sie die unten angeführten SQL-Repair-Queries aus um die Datenbanktabellen umzubennenen.
- Alfresco sollte wie gewohnt starten.
SQL-Queries: Datenbank-Initialisierung
create database alfresco default character set utf8 collate utf8_bin;
grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;
grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;
SQL-Queries: Datenbank-Repair
Vergewissern Sie sich vor dem Ausführen, dass Datenbanktabellen mit Kleinschreibung existieren und falls dieses in Groß- und Kleinschreibung existieren, jene mit Großschreibung auch wirklich leer sind.
drop table JBPM_ACTION;
drop table JBPM_BYTEARRAY;
drop table JBPM_BYTEBLOCK;
drop table JBPM_COMMENT;
drop table JBPM_DECISIONCONDITIONS;
drop table JBPM_DELEGATION;
drop table JBPM_EVENT;
drop table JBPM_EXCEPTIONHANDLER;
drop table JBPM_JOB;
drop table JBPM_LOG;
drop table JBPM_MODULEDEFINITION;
drop table JBPM_MODULEINSTANCE;
drop table JBPM_NODE;
drop table JBPM_POOLEDACTOR;
drop table JBPM_PROCESSDEFINITION;
drop table JBPM_PROCESSINSTANCE;
drop table JBPM_RUNTIMEACTION;
drop table JBPM_SWIMLANE;
drop table JBPM_SWIMLANEINSTANCE;
drop table JBPM_TASK;
drop table JBPM_TASKACTORPOOL;
drop table JBPM_TASKCONTROLLER;
drop table JBPM_TASKINSTANCE;
drop table JBPM_TOKEN;
drop table JBPM_TOKENVARIABLEMAP;
drop table JBPM_TRANSITION;
drop table JBPM_VARIABLEACCESS;
drop table JBPM_VARIABLEINSTANCE;
alter table jbpm_action rename to JBPM_ACTION;
alter table jbpm_bytearray rename to JBPM_BYTEARRAY;
alter table jbpm_byteblock rename to JBPM_BYTEBLOCK;
alter table jbpm_comment rename to JBPM_COMMENT;
alter table jbpm_decisionconditions rename to JBPM_DECISIONCONDITIONS;
alter table jbpm_delegation rename to JBPM_DELEGATION;
alter table jbpm_event rename to JBPM_EVENT;
alter table jbpm_exceptionhandler rename to JBPM_EXCEPTIONHANDLER;
alter table jbpm_job rename to JBPM_JOB;
alter table jbpm_log rename to JBPM_LOG;
alter table jbpm_moduledefinition rename to JBPM_MODULEDEFINITION;
alter table jbpm_moduleinstance rename to JBPM_MODULEINSTANCE;
alter table jbpm_node rename to JBPM_NODE;
alter table jbpm_pooledactor rename to JBPM_POOLEDACTOR;
alter table jbpm_processdefinition rename to JBPM_PROCESSDEFINITION;
alter table jbpm_processinstance rename to JBPM_PROCESSINSTANCE;
alter table jbpm_runtimeaction rename to JBPM_RUNTIMEACTION;
alter table jbpm_swimlane rename to JBPM_SWIMLANE;
alter table jbpm_swimlaneinstance rename to JBPM_SWIMLANEINSTANCE;
alter table jbpm_task rename to JBPM_TASK;
alter table jbpm_taskactorpool rename to JBPM_TASKACTORPOOL;
alter table jbpm_taskcontroller rename to JBPM_TASKCONTROLLER;
alter table jbpm_taskinstance rename to JBPM_TASKINSTANCE;
alter table jbpm_token rename to JBPM_TOKEN;
alter table jbpm_tokenvariablemap rename to JBPM_TOKENVARIABLEMAP;
alter table jbpm_transition rename to JBPM_TRANSITION;
alter table jbpm_variableaccess rename to JBPM_VARIABLEACCESS;
alter table jbpm_variableinstance rename to JBPM_VARIABLEINSTANCE;
Alfresco für die Verwendung des SQL-Servers konfigurieren
Um Alfresco nun den SQL-Server verwenden zu lassen muss dies noch entsprechend in der Konfigurationsdatei umgestellt werden.
Zunächst müssen Sie allerdings den MySQL-JDBC-Connector in Alfresco integrieren. Laden Sie diesen unter http://www.mysql.com/downloads/connector/j/ herunter und kopieren Sie die entpackte Datei mysql-connector-java-5.1.*-bin.jar nach /opt/alfresco-3.4.c/tomcat/lib/.
Danach konfigurieren Sie die Datenbankverbindung in /opt/alfresco-3.4.c/tomcat/shared/classes/alfresco-global.properties wie folgt:
### database connection properties ###
db.driver=org.gjt.mm.mysql.Driver
db.username=alfresco
db.password=alfresco
db.name=alfresco
db.url=jdbc:mysql://localhost:3306/${db.name}?useUnicode=yes&characterEncoding=UTF-8
db.schema.update=true