Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich habe einen Export unseres Live Projektes durchgeführt und wollte es auf dem Q-Server wieder importieren.
Leider bekomme ich beim Importieren folgende Fehlermeldung:
de.espirit.firstspirit.access.template.ParsingError: tag 'ROW' not closed
FirstSpirit Version: 4.2.507.71601
26.07.2016 12:37:28.328 Importing presentation channels
26.07.2016 12:37:28.328 Importing annotations
26.07.2016 12:37:28.330 Importing conversion tables
26.07.2016 12:37:30.094 Error importing project -- Q5 -- - de.espirit.firstspirit.access.template.ParsingError: tag 'ROW' not closed (at line 2, column 48918878)
26.07.2016 12:37:30.094 FSVersion=4.2.507.71601#2272;JDK=1.6.0_38 64bit Sun Microsystems Inc.;OS=Linux 2.6.18-308.8.2.el5 amd64;Date=26.07.2016 12:37:30
de.espirit.firstspirit.access.template.ParsingError: tag 'ROW' not closed (at line 2, column 48918878)
at de.espirit.firstspirit.parser.impl.XmlPullParser.readNode(XmlPullParser.java:289)
at de.espirit.firstspirit.parser.impl.XmlPullParser._readToken(XmlPullParser.java:221)
at de.espirit.firstspirit.parser.impl.XmlPullParser.readToken(XmlPullParser.java:183)
at de.espirit.firstspirit.server.export.importhandler.TableDataHandler.analyseTableRowCount(TableDataHandler.java:161)
at de.espirit.firstspirit.server.export.importhandler.TableDataHandler.analyse(TableDataHandler.java:64)
at de.espirit.firstspirit.server.export.ProjectImporter.call(ProjectImporter.java:343)
at de.espirit.firstspirit.server.export.ProjectImporter.call(ProjectImporter.java:65)
at de.espirit.firstspirit.server.action.ServerActionManagerImpl$ServerActionCallableWrapper.call(ServerActionManagerImpl.java:415)
at de.espirit.firstspirit.server.action.ServerActionManagerImpl$ServerActionCallableWrapper.call(ServerActionManagerImpl.java:396)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:521)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:36)
Kennt jemand dieses Problem und kann mir einen Tipp geben, woran dies liegen könnte und vielleicht auch, wie dieses zu beheben ist?
Danke und viele Grüße
Marco
Hallo Marco,
die Aussage von Serkan ist im Prinzip richtig (und bei großen Datenbanktabellen auch das empfohlene Vorgehen).
Falls dieser Weg nicht möglich ist (weil die Datenbank geändert werden soll, weil die Daten im Export komplett sein sollen, ...), kann der Export normalerweise auch mit FirstSpirit Mitteln duchgeführt werden.
Ursache des Problems ist, dass beim Export die Verbindung zur Datenbank gekappt wurde, da der Zugriff zu lange dauert.
Lösung ist es somit, dieses Timeout zu erhöhen.
Dazu einfach folgendes tun:
- Server und Projekt Konfiguration mit dem Benutzer Admin öffnen
- Unter Server/Eigenschaften->Datenbanken die entsprechende Konfiguration bearbeiten
- Für die Parameter
jdbc.POOLTIMEOUT=
jdbc.CONNECTIONTIMEOUT=
jeweils einen Wert (in Sekunden!) eintragen, der größer ist als die Dauer des Exportes. Sind diese Parameter noch nicht vorhanden, so müssen diese hinzugefügt werden.
Dabei sollte man berücksichtigen, dass der Export im Fehlerfall schneller ausgeführt wird, da nicht die kompletten Datenbankinhalte transferiert werden. Ein entsprechender Sicherheitspuffer sollte also eingeplant werden.
Natürlich müssen auf Datenbankseite die Timeouts auch entsprechend hoch sein, da ansonsten die Verbindung von dort unterbrochen wird, was zum selben Ergebnis führt.
Viele Grüße aus Dortmund,
Holger
Hallo Marco,
das Problem tritt auf, wenn Projekte inkl. Datenquellen-Inhalte exportiert werden. Unsere Erfahrungen haben gezeigt, dass der Export von großen Tabellen, in unserem Fall ca. 30.000 Datensätze (gezählt ohne Versionshistorie), schon dieses Problem verursachen kann.
Falls Ihr euer Projekt von P nach Q transportieren möchtet und die Datenquellen-Inhalte in einer externen DB (Oracle,MySQL,Postgres,..) vorliegen habt, exportiert das Projekt ohne Datenquellen-Inhalte. Das DB-Schema der externen DB solltet Ihr entsprechend klonen und beim Projektimport das Projekt auf das geklonte Schema mappen.
In FS5.2 sollte dieses Problem hoffentlich der Vergangenheit angehören. Testen konnte ich dies allerdings noch nicht
Ich hoffe ich konnte Dir weiter helfen.
Beste Grüße
Serkan
Hallo Marco,
die Aussage von Serkan ist im Prinzip richtig (und bei großen Datenbanktabellen auch das empfohlene Vorgehen).
Falls dieser Weg nicht möglich ist (weil die Datenbank geändert werden soll, weil die Daten im Export komplett sein sollen, ...), kann der Export normalerweise auch mit FirstSpirit Mitteln duchgeführt werden.
Ursache des Problems ist, dass beim Export die Verbindung zur Datenbank gekappt wurde, da der Zugriff zu lange dauert.
Lösung ist es somit, dieses Timeout zu erhöhen.
Dazu einfach folgendes tun:
- Server und Projekt Konfiguration mit dem Benutzer Admin öffnen
- Unter Server/Eigenschaften->Datenbanken die entsprechende Konfiguration bearbeiten
- Für die Parameter
jdbc.POOLTIMEOUT=
jdbc.CONNECTIONTIMEOUT=
jeweils einen Wert (in Sekunden!) eintragen, der größer ist als die Dauer des Exportes. Sind diese Parameter noch nicht vorhanden, so müssen diese hinzugefügt werden.
Dabei sollte man berücksichtigen, dass der Export im Fehlerfall schneller ausgeführt wird, da nicht die kompletten Datenbankinhalte transferiert werden. Ein entsprechender Sicherheitspuffer sollte also eingeplant werden.
Natürlich müssen auf Datenbankseite die Timeouts auch entsprechend hoch sein, da ansonsten die Verbindung von dort unterbrochen wird, was zum selben Ergebnis führt.
Viele Grüße aus Dortmund,
Holger