Unitime Multiple Primary Keys Error
Hi all,
Below is container with dockerfile:
FROM tomcat:8-jre11
RUN apt-get update
RUN echo 'JAVA_OPTS=”-Djava.awt.headless=true -Xmx2g -XX:+UseConcMarkSweepGC”' >> /etc/default/tomcat8
RUN sed -i "s|-Djava.protocol.handler.pkgs=org.apache.catalina.webresources|-Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.awt.headless=true -Xmx2g -XX:+UseConcMarkSweepGC|g" \
/usr/local/tomcat/bin/catalina.sh
RUN mkdir /usr/local/tomcat/data
RUN chmod 777 /usr/local/tomcat/data
ADD https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.31/mysql-connector-j-8.0.31.jar /usr/local/tomcat/lib
RUN echo 'tmtbl.custom.properties=/usr/local/tomcat/conf/unitime.properties' >> /usr/local/tomcat/conf/catalina.properties
ADD web/UniTime.war /usr/local/tomcat/webapps/ROOT.war
COPY unitime.properties /usr/local/tomcat/conf/unitime.properties
I wish to connect the container to Azure MySQL database, however, it seems to have a problem with primary keys of the database. I have ran the schema.sql file as well as the woebegon_data.sql file. Here is the full stack trace:
docker run a_v8
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
04-May-2024 17:16:39.462 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/8.5.100
04-May-2024 17:16:39.464 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Mar 19 2024 13:54:42 UTC
04-May-2024 17:16:39.465 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.100.0
04-May-2024 17:16:39.465 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
04-May-2024 17:16:39.465 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 5.15.146.1-microsoft-standard-WSL2
04-May-2024 17:16:39.466 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
04-May-2024 17:16:39.466 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /opt/java/openjdk
04-May-2024 17:16:39.466 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.22+7
04-May-2024 17:16:39.466 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Eclipse Adoptium
04-May-2024 17:16:39.466 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
04-May-2024 17:16:39.467 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
04-May-2024 17:16:39.467 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
04-May-2024 17:16:39.468 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
04-May-2024 17:16:39.468 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
04-May-2024 17:16:39.469 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
04-May-2024 17:16:39.469 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
04-May-2024 17:16:39.469 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
04-May-2024 17:16:39.469 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
04-May-2024 17:16:39.469 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
04-May-2024 17:16:39.469 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx2g
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseConcMarkSweepGC
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.39] using APR version [1.7.0].
04-May-2024 17:16:39.470 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [{4}].
04-May-2024 17:16:39.471 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
04-May-2024 17:16:39.473 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.2 15 Mar 2022]
04-May-2024 17:16:39.510 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
04-May-2024 17:16:39.523 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 304 ms
04-May-2024 17:16:39.562 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
04-May-2024 17:16:39.562 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/8.5.100]
04-May-2024 17:16:39.578 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/ROOT.war]
04-May-2024 17:16:40.973 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[05/04/24 17:16:41] INFO ContextLoader> Root WebApplicationContext: initialization started
[05/04/24 17:16:42] INFO SpringSecurityCoreVersion> You are running with Spring Security Core 5.8.10
[05/04/24 17:16:42] INFO SecurityNamespaceHandler> Spring Security 'config' module version is 5.8.10
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'isAuthenticated()' for /temp/*
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'permitAll' for /classes.action
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'permitAll' for /exams.action
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'permitAll' for /login.action
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'permitAll' for /main.action
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'permitAll' for /gwt.action
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'isAuthenticated()' for /*.do
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'isAuthenticated()' for /*.action
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Creating access control expression attribute 'permitAll' for /**
[05/04/24 17:16:42] INFO FilterInvocationSecurityMetadataSourceParser> Using bean 'webExpressionHandler' as web SecurityExpressionHandler implementation
[05/04/24 17:16:42] INFO HttpSecurityBeanDefinitionParser> Checking sorted filter chain: [Root bean: class [org.springframework.security.web.session.DisableEncodeUrlFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 100, Root bean: class [org.springframework.security.web.context.SecurityContextPersistenceFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 400, Root bean: class [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 600, Root bean: class [org.springframework.security.web.header.HeaderWriterFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 700, Root bean: class [org.springframework.security.web.authentication.logout.LogoutFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 1300, <org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0>, order = 2100, Root bean: class [org.springframework.security.web.authentication.www.BasicAuthenticationFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 2700, Root bean: class [org.springframework.security.web.savedrequest.RequestCacheAwareFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 2800, Root bean: class [null]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.security.config.http.HttpConfigurationBuilder$SecurityContextHolderAwareRequestFilterBeanFactory#0; factoryMethodName=getBean; initMethodName=null; destroyMethodName=null, order = 2900, <unitimeAnonymousFilter>, order = 3200, Root bean: class [org.springframework.security.web.session.SessionManagementFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 3500, Root bean: class [org.springframework.security.web.access.ExceptionTranslationFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 3600, <org.springframework.security.web.access.intercept.FilterSecurityInterceptor#0>, order = 3700]
[05/04/24 17:16:42] INFO GlobalMethodSecurityBeanDefinitionParser> Using bean 'expressionHandler' as method ExpressionHandler implementation
[05/04/24 17:16:42] INFO load> Reading file:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/timetable.jar!/application.properties ...
[05/04/24 17:16:42] INFO load> Reading /usr/local/tomcat/conf/unitime.properties ...
[05/04/24 17:16:42] INFO afterPropertiesSet> ******* UniTime 4.8.115 build on Wed, 13 Mar 2024 is starting up *******
[05/04/24 17:16:42] INFO afterPropertiesSet> - Initializing Hibernate ...
[05/04/24 17:16:42] INFO HibernateUtil> Connecting to jdbc:mysql://unitime.mysql.database.azure.com:3306/timetable?useSSL=true&serverTimezone=UTC
[05/04/24 17:16:42] INFO Version> HHH000412: Hibernate ORM core version 6.2.22.Final
[05/04/24 17:16:42] INFO Environment> HHH000406: Using bytecode reflection optimizer
[05/04/24 17:16:42] INFO c3p0> HHH010002: C3P0 using driver: com.mysql.cj.jdbc.Driver at URL: jdbc:mysql://unitime.mysql.database.azure.com:3306/timetable?useSSL=true&serverTimezone=UTC
[05/04/24 17:16:42] INFO c3p0> HHH10001001: Connection properties: {handling_mode=DELAYED_ACQUISITION_AND_HOLD, release_mode=auto, password=****, autocommit=true, useUnicode=true, characterEncoding=utf8, user=dev_admin}
[05/04/24 17:16:42] INFO c3p0> HHH10001003: Autocommit mode: true
[05/04/24 17:16:42] INFO MLog> MLog clients using slf4j logging.
[05/04/24 17:16:42] INFO C3P0Registry> Initializing c3p0-0.9.5.5 [built 11-December-2019 22:18:33 -0800; debug? true; trace: 10]
[05/04/24 17:16:42] INFO c3p0> HHH10001007: JDBC isolation level: <unknown>
[05/04/24 17:16:42] INFO AbstractPoolBackedDataSource> Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@34a9110e [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@28b42728 [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, identityToken -> 1bqq1hgb3j1b19z3jdfdy|313dbd10, idleConnectionTestPeriod -> 3000, initialPoolSize -> 10, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 100, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@c88e58a4 [ description -> null, driverClass -> null, factoryClassLocation -> null, forceUseNamedDriverClass -> false, identityToken -> 1bqq1hgb3j1b19z3jdfdy|410669f4, jdbcUrl -> jdbc:mysql://unitime.mysql.database.azure.com:3306/timetable?useSSL=true&serverTimezone=UTC, properties -> {handling_mode=DELAYED_ACQUISITION_AND_HOLD, release_mode=auto, password=******, autocommit=true, useUnicode=true, characterEncoding=utf8, user=******} ], preferredTestQuery -> SELECT 1;, privilegeSpawnedThreads -> false, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, extensions -> {}, factoryClassLocation -> null, identityToken -> 1bqq1hgb3j1b19z3jdfdy|5b768600, numHelperThreads -> 3 ]
[05/04/24 17:16:44] WARN deprecation> HHH90000025: MySQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
[05/04/24 17:16:44] INFO run> InfoCache cleanup thread started.
[05/04/24 17:16:45] WARN PERSISTENCE> ISPN000554: jboss-marshalling is deprecated and planned for removal
[05/04/24 17:16:45] WARN CONFIG> ISPN000569: Unable to persist Infinispan internal caches as no global state enabled
[05/04/24 17:16:45] INFO CONTAINER> ISPN000556: Starting user marshaller 'org.infinispan.jboss.marshalling.core.JBossUserMarshaller'
[05/04/24 17:16:46] INFO CONTAINER> ISPN000025: wakeUpInterval is <= 0, not starting expired purge thread
[05/04/24 17:16:48] INFO <init>> Reading file:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/timetable.jar!/dbupdate.xml ...
[05/04/24 17:16:49] INFO DatabaseUpdate> Current UniTime database version: 257
[05/04/24 17:16:49] INFO DatabaseUpdate> Performing UniTime update to version 258 (Table Generator Hibernate Update)
[05/04/24 17:16:49] WARN SqlExceptionHelper> SQL Error: 1068, SQLState: 42000
[05/04/24 17:16:49] ERROR SqlExceptionHelper> Multiple primary key defined
[05/04/24 17:16:49] WARN DatabaseUpdate> Query 'alter table timetable.hibernate_unique_key add sequence_name varchar(100) not null primary key default 'default'' failed, JDBC exception executing SQL [/* dynamic native SQL query */ alter table timetable.hibernate_unique_key add sequence_name varchar(100) not null primary key default 'default'] [Multiple primary key defined] [n/a]
org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [/* dynamic native SQL query */ alter table timetable.hibernate_unique_key add sequence_name varchar(100) not null primary key default 'default'] [Multiple primary key defined] [n/a]
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:64) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.sql.exec.internal.StandardJdbcMutationExecutor.execute(StandardJdbcMutationExecutor.java:96) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.query.sql.internal.NativeNonSelectQueryPlanImpl.executeUpdate(NativeNonSelectQueryPlanImpl.java:76) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.query.sql.internal.NativeQueryImpl.doExecuteUpdate(NativeQueryImpl.java:839) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.query.spi.AbstractQuery.executeUpdate(AbstractQuery.java:637) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.unitime.commons.hibernate.util.DatabaseUpdate.performUpdate(DatabaseUpdate.java:177) ~[timetable.jar:?]
at org.unitime.commons.hibernate.util.DatabaseUpdate.performUpdate(DatabaseUpdate.java:108) ~[timetable.jar:?]
at org.unitime.commons.hibernate.util.DatabaseUpdate.update(DatabaseUpdate.java:230) ~[timetable.jar:?]
at org.unitime.commons.hibernate.util.HibernateUtil.initialize(HibernateUtil.java:616) ~[timetable.jar:?]
at org.unitime.timetable.StartupService.afterPropertiesSet(StartupService.java:55) ~[timetable.jar:?]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) [spring-beans-5.3.32.jar:5.3.32]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:929) [spring-context-5.3.32.jar:5.3.32]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591) [spring-context-5.3.32.jar:5.3.32]
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:399) [spring-web-5.3.32.jar:5.3.32]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:278) [spring-web-5.3.32.jar:5.3.32]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103) [spring-web-5.3.32.jar:5.3.32]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4441) [catalina.jar:8.5.100]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4899) [catalina.jar:8.5.100]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) [catalina.jar:8.5.100]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:710) [catalina.jar:8.5.100]
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:687) [catalina.jar:8.5.100]
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:660) [catalina.jar:8.5.100]
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1015) [catalina.jar:8.5.100]
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1867) [catalina.jar:8.5.100]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.sql.SQLSyntaxErrorException: Multiple primary key defined
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:1502) ~[c3p0-0.9.5.5.jar:0.9.5.5]
at org.hibernate.sql.exec.internal.StandardJdbcMutationExecutor.execute(StandardJdbcMutationExecutor.java:83) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
... 35 more
[05/04/24 17:16:49] WARN DatabaseUpdate> Cause: Multiple primary key defined
[05/04/24 17:16:49] ERROR DatabaseUpdate> Update to version 258 failed.
[05/04/24 17:16:49] INFO DatabaseUpdate> New UniTime database version: 257
[05/04/24 17:16:49] INFO afterPropertiesSet> - Creating Message Log Appender ...
[05/04/24 17:16:49] INFO afterPropertiesSet> - Initializing Room Availability Service ...
[05/04/24 17:16:50] INFO afterPropertiesSet> - Cleaning Logs ...
[05/04/24 17:16:52] WARN SqlExceptionHelper> SQL Error: 1146, SQLState: 42S02
[05/04/24 17:16:52] ERROR SqlExceptionHelper> Table 'timetable.access_stats' doesn't exist
[05/04/24 17:16:52] WARN LogCleaner> Failed to cleanup access statistics: JDBC exception executing SQL [/* delete from AccessStatistics where timeStamp < adddate(current_date(),:days) */ delete from access_stats where time_stamp<adddate(current_date,?)] [Table 'timetable.access_stats' doesn't exist] [n/a]
org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [/* delete from AccessStatistics where timeStamp < adddate(current_date(),:days) */ delete from access_stats where time_stamp<adddate(current_date,?)] [Table 'timetable.access_stats' doesn't exist] [n/a]
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:64) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.sql.exec.internal.StandardJdbcMutationExecutor.execute(StandardJdbcMutationExecutor.java:96) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.query.sqm.internal.SimpleDeleteQueryPlan.executeUpdate(SimpleDeleteQueryPlan.java:206) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.query.sqm.internal.QuerySqmImpl.doExecuteUpdate(QuerySqmImpl.java:735) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.hibernate.query.sqm.internal.QuerySqmImpl.executeUpdate(QuerySqmImpl.java:705) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
at org.unitime.timetable.util.LogCleaner.cleanupAccessStatisticsLog(LogCleaner.java:183) ~[timetable.jar:?]
at org.unitime.timetable.util.LogCleaner.cleanupLogs(LogCleaner.java:203) ~[timetable.jar:?]
at org.unitime.timetable.StartupService.afterPropertiesSet(StartupService.java:77) ~[timetable.jar:?]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.32.jar:5.3.32]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) [spring-beans-5.3.32.jar:5.3.32]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:929) [spring-context-5.3.32.jar:5.3.32]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591) [spring-context-5.3.32.jar:5.3.32]
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:399) [spring-web-5.3.32.jar:5.3.32]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:278) [spring-web-5.3.32.jar:5.3.32]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103) [spring-web-5.3.32.jar:5.3.32]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4441) [catalina.jar:8.5.100]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4899) [catalina.jar:8.5.100]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) [catalina.jar:8.5.100]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:710) [catalina.jar:8.5.100]
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:687) [catalina.jar:8.5.100]
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:660) [catalina.jar:8.5.100]
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1015) [catalina.jar:8.5.100]
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1867) [catalina.jar:8.5.100]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.sql.SQLSyntaxErrorException: Table 'timetable.access_stats' doesn't exist
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994) ~[mysql-connector-j-8.0.31.jar:8.0.31]
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:1502) ~[c3p0-0.9.5.5.jar:0.9.5.5]
at org.hibernate.sql.exec.internal.StandardJdbcMutationExecutor.execute(StandardJdbcMutationExecutor.java:83) ~[hibernate-core-6.2.22.Final.jar:6.2.22.Final]
... 33 more
[05/04/24 17:16:52] INFO afterPropertiesSet> - Starting Event Expiration Service ...
[05/04/24 17:16:52] INFO EventExpirationService> Event expiration service started.
[05/04/24 17:16:52] INFO EventExpirationService> Checking for expired events ...
[05/04/24 17:16:52] INFO afterPropertiesSet> ******* UniTime 4.8.115 build on Wed, 13 Mar 2024 initialized successfully *******
[05/04/24 17:16:52] INFO CourseSolverContainer> Solver passivation thread started.
[05/04/24 17:16:52] INFO CourseSolverContainer> Restore folder: /usr/local/tomcat/data/unitime/restore
[05/04/24 17:16:52] INFO ExaminationSolverContainer> Solver passivation thread started.
[05/04/24 17:16:52] INFO StudentSolverContainer> Solver passivation thread started.
[05/04/24 17:16:52] INFO OnlineStudentSchedulingContainer> Student Sectioning Service is starting up ...
[05/04/24 17:16:52] INFO InstructorSchedulingContainer> Solver passivation thread started.
[05/04/24 17:16:52] INFO AbstractSolverServer> Solver server is up and running.
[05/04/24 17:16:52] INFO updater[generic]> Generic updater started.
[05/04/24 17:16:52] INFO OnlineSectioningLogger> Online Sectioning Logger is up.
[05/04/24 17:16:53] INFO MenuBackend> Reading menu from file:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/timetable.jar!/menu.xml ...
[05/04/24 17:16:53] INFO MenuBackend> Reading custom menu from file:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/timetable.jar!/menu-custom.xml ...
[05/04/24 17:16:53] INFO TaskExecutorService> Task executor service started.
Looks like UniTime failed to update the database to version 258. I would have to see the first deployment to provide more details as to why. To fix this issue, you can manually update the database to this version using the 258 Table Generator Hibernate Update.sql file (ensure that all the listed changes have been applied). Restart the tomcat after that.
Thank you so much, tomas. I really appreciate it.
However, after i ran file 258 following the order: schema, woebegon, 258 Table Generator Hibernate Update; I receive error on table 269.
Do you mean that the database updated to version 268 but failed to update to 269? You can use the 269 Acess Control Statistics Update.sql script to make the changes manually. By the way, all updates are available in Documentation/Database/MySQL/Changes.