Databasinställningar hänger tätt ihop med Grailsmiljöer, se även SKLTP TAK - Allmänt om Grails
Normalt används en H2 in-memory databas med testdata i Grails dev- och test-miljöer och en MySql-databas i prod, men det går att ändra vid behov.
H2-databas
När man startar TAK med H2-databas så finns möjlighet att visa / ändra testdata genom ett webinterface som kan nås via http://localhost:8080/tak-web/dbconsole.
Sätta upp lokal MySQL
Installera en "gammal" version eller se till att välja bakåtkompatibla inställningar, fungerar troligen inte med senaste version och defaultinställningar.
Skapa en ny TAK-databas enlig anvisningar på SKLTP TAK - Installationsmanual
För att fylla på testdata kan man använda init.sql och testdata.sql som normalt används för att fylla på H2-databasen med testdata. I testdata.sql behövs en tillfällig ändring p.g.a. annan syntax för att läsa in blob-data från fil, se kommentar i filen.
Jag kör TAK under WSL (Ubuntu) och MySql på Windowshosten. Gör man på det sättet behöver man tänka på att inte ansluta mot "localhost" utan rätt IP-adress. (Hittas t.ex. genom att köra "ipconfig" och leta rätt på "Ethernet adapter vEthernet (WSL)".) Man måste även tänka på att inte begränsa databasanvändaren till localhost. (T.ex. genom CREATE USER 'db_user'@'%' IDENTIFIED BY 'db_password'; istället för db_user@localhost)
Konfigurationsinställningar görs motsvarande som för prod-miljön i TAK.
Dependencies
Om man försöker köra lokalt mot en MySql-databas så kommer det att saknas klasser i runtime som normalt hittas av Tomcat på servern. För att komma runt det kan man tillfälligt lägga till i pom.xml:
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
Sätta upp lokal SQL Server
Installera Sql Server Express med SQL Server Management Studio
Skapa en databas
Sätt Options => Compatibility Level = SQL Server 2012 (oklart vilka versioner som är ok)
Skapa användare + tilldela rättigheter (db_datareader + db_datawriter)
Öppna Sql Server Configuration Manager, sätt SQL Server Network Configuration => Protocols for SQLExpress => TCP/IP = Enabled
Starta om service (SQL Server Management Studio => Object Explorer => högerklick på server => Restart)
Öppna serverlog (SQL Server Management Studio => Object Explorer => Management => SQL Server Logs => Current). Kontrollera vilken port som används. (T.ex. "Server is listening on [ 'any' <ipv4> 60133]".)
Öppna ev. port i brandvägg.
TAK med SQL Server
Om man kör lokalt så behöver man tillfälligt lägga till en dependency:
<!-- Maven Repository: com.microsoft.sqlserver » mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.1.jre8</version>
</dependency>
(Filerna laddades inte ner för mig, troligen p.g.a. tillfälligt problem med Nexus. Som workaraound kan man manuellt ladda ner mssql-jdbc-8.4.1.jre8.jar, .jar.sha1, .pom, .pom.sha1 till ~/.m2/repository/com/microsoft/sqlserver/mssql-jdbc/8.4.1.jre8)
Om det inte redan är gjort, ta bort denna rad i tak-core-PROD.xml:
<property name="database" value="MYSQL" />
Uppdatera context.xml i stil med detta:
<Resource
name="jdbc/TP"
auth="Container"
type="javax.sql.DataSource"
maxActive="8"
maxTotal="8"
maxIdle="10"
maxWaitMillis="10000"
username="tp_adminuser"
password="pwd123"
driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://172.20.64.1:60133;databaseName=sql_server_test"
/>
Skapa TAK-tabeller + testdata i databas
(Använd nvarchar för textkolumner, inte varchar.)
Se sql-fil nedan. (Motsvarar inte helt den vanliga testdatan!)
Felsökningstips
Kontrollera formatet på url-parametern noggrant. Vid minsta lilla fel så kan man få “konstiga” felmeddelanden om problem med drivern trots att parametern driverClassName är korrekt satt.