Plan icon indicating copy to clipboard operation
Plan copied to clipboard

No more updates in MySQL after error - Ran into CompletionException - Column 'server_id' cannot be null

Open asenden opened this issue 1 month ago • 1 comments

Describe the issue

An exception is thrown in runtime. This happened on one of the MC Paper Server behind a velocity proxy. DB is setup on another server. The DB was up and running and also available for other plan plugin.

The plugin stopped writing into the DB after this error occured

Exceptions & Other Logs

MC Paper logs

[00:48:56] [Plan MySQLDB-transaction-thread-1/ERROR]: [Plan] Ran into CompletionException - logged to plugins\Plan\logs\CompletionException-25b3657dff.txt [00:48:56] [Plan MySQLDB-transaction-thread-1/ERROR]: [Plan] (INCLUDE CONTENTS OF THE FILE IN ANY REPORTS) [00:48:56] [Plan MySQLDB-transaction-thread-1/ERROR]: [Plan] What to do: Report this error. NOT NULL constraint violation occurred.

Plan Logs

25b3657dff - Last occurred: 2025-11-16 Occurrences: 1 ---- Context 1 ---- Plan v5.6 build 2965 Paper 1.21.10-108-97452e1 (MC: 1.21.10) Server v1.21.10-R0.1-SNAPSHOT

Report this error. NOT NULL constraint violation occurred. Transaction: class com.djrapitops.plan.storage.database.transactions.events.ShutdownDataPreservationTransaction DB State: OPEN - fatal: false Error code: 1048 INSERT INTO plan_sessions (user_id,session_start,session_end,deaths,mob_kills,afk_time,server_id,join_address_id) VALUES ((SELECT plan_users.id FROM plan_users WHERE plan_users.uuid=? LIMIT 1), ?, ?, ?, ?, ?, (SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1), (SELECT id FROM plan_join_address WHERE join_address=?)) Constraint Violation

---- Stacktrace ---- java.util.concurrent.CompletionException: com.djrapitops.plan.exceptions.database.DBOpException: SQL Failure: Column 'server_id' cannot be null java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:323) java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:359) java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:364) java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1791) java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) java.base/java.lang.Thread.run(Thread.java:1474) Caused by: com.djrapitops.plan.exceptions.database.DBOpException: SQL Failure: Column 'server_id' cannot be null Plan-5.6-build-2965.jar//com.djrapitops.plan.exceptions.database.DBOpException.forCause(DBOpException.java:153) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:57) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.queries.LargeStoreQueries.lambda$storeAllSessionsWithKillAndWorldData$0(LargeStoreQueries.java:307) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.events.ShutdownDataPreservationTransaction.performOperations(ShutdownDataPreservationTransaction.java:42) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.Transaction.executeTransaction(Transaction.java:89) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$4(SQLDB.java:374) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:78) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:56) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$5(SQLDB.java:373) java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1789) java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) java.base/java.lang.Thread.run(Thread.java:1474) Caused by: java.sql.BatchUpdateException: Column 'server_id' cannot be null com.mysql.cj.jdbc.exceptions.SQLError.createBatchUpdateException(SQLError.java:214) com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchWithMultiValuesClause(ClientPreparedStatement.java:782) com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:455) com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:858) Plan-5.6-build-2965.jar//plan.com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128) Plan-5.6-build-2965.jar//plan.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.ExecBatchStatement.callExecute(ExecBatchStatement.java:35) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:64) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:55) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.queries.LargeStoreQueries.lambda$storeAllSessionsWithKillAndWorldData$0(LargeStoreQueries.java:307) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.events.ShutdownDataPreservationTransaction.performOperations(ShutdownDataPreservationTransaction.java:42) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.Transaction.executeTransaction(Transaction.java:89) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$4(SQLDB.java:374) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:78) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:56) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$5(SQLDB.java:373) java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1789) java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) java.base/java.lang.Thread.run(Thread.java:1474) Caused by: java.sql.SQLIntegrityConstraintViolationException: Column 'server_id' cannot be null com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:109) com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:114) com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:988) com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1166) com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1101) com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1467) com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchWithMultiValuesClause(ClientPreparedStatement.java:743) com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:455) com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:858) Plan-5.6-build-2965.jar//plan.com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128) Plan-5.6-build-2965.jar//plan.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.ExecBatchStatement.callExecute(ExecBatchStatement.java:35) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:64) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:55) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.queries.LargeStoreQueries.lambda$storeAllSessionsWithKillAndWorldData$0(LargeStoreQueries.java:307) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.events.ShutdownDataPreservationTransaction.performOperations(ShutdownDataPreservationTransaction.java:42) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.transactions.Transaction.executeTransaction(Transaction.java:89) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$4(SQLDB.java:374) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:78) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:56) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$5(SQLDB.java:373) java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1789) java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) java.base/java.lang.Thread.run(Thread.java:1474) java.base/java.lang.Thread.getStackTrace(Thread.java:2193) Plan-5.6-build-2965.jar//com.djrapitops.plan.storage.database.SQLDB.executeTransaction(SQLDB.java:360) Plan-5.6-build-2965.jar//com.djrapitops.plan.gathering.ShutdownDataPreservation.storeInDB(ShutdownDataPreservation.java:92) Plan-5.6-build-2965.jar//com.djrapitops.plan.gathering.ShutdownDataPreservation.storePreviouslyPreservedSessions(ShutdownDataPreservation.java:81) Plan-5.6-build-2965.jar//com.djrapitops.plan.gathering.ShutdownDataPreservation.run(ShutdownDataPreservation.java:104) Plan-5.6-build-2965.jar//net.playeranalytics.plugin.scheduling.UnscheduledBukkitTask.run(UnscheduledBukkitTask.java:22) org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) org.bukkit.craftbukkit.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) java.base/java.lang.Thread.run(Thread.java:1474)


Plugin versions

Additional information

asenden avatar Nov 16 '25 01:11 asenden

The server row somehow disappeared from the database 🤔 - This can happen if /plan db clear is run or someone goes in manually and deletes it or changes the server uuid column in there

AuroraLS3 avatar Nov 16 '25 06:11 AuroraLS3