Skip to content

向已失效的data调用setData会导致数据库错误 #1177

@m1919810

Description

@m1919810

问题描述

如题

[06:46:59 ERROR]: [Slimefun] [SF-BLOCK_STORAGE-Write-Thread #0] Exception thrown while executing write task:
java.lang.IllegalStateException: An exception thrown while executing sql: INSERT OR IGNORE INTO block_data (data_val, loc, data_key) VALUES ('Mg==', 'world;36:70:16', 'item_count_0');
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlcommon.SqlCommonAdapter.executeSql(SqlCommonAdapter.java:48) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlite.SqliteAdapter.executeSql(SqliteAdapter.java:415) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlite.SqliteAdapter.setData(SqliteAdapter.java:98) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.controller.ADataController.lambda$scheduleWriteTask$1(ADataController.java:169) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.task.QueuedWriteTask.run(QueuedWriteTask.java:24) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: org.sqlite.SQLiteException: [SQLITE_CONSTRAINT_FOREIGNKEY] A foreign key constraint failed (FOREIGN KEY constraint failed)
        at org.sqlite.core.DB.newSQLException(DB.java:1179) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.core.DB.newSQLException(DB.java:1190) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.core.DB.execute(DB.java:985) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.core.CoreStatement.exec(CoreStatement.java:91) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.jdbc3.JDBC3Statement.lambda$execute$0(JDBC3Statement.java:55) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.jdbc3.JDBC3Statement.withConnectionTimeout(JDBC3Statement.java:454) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.jdbc3.JDBC3Statement.execute(JDBC3Statement.java:43) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlcommon.SqlUtils.execSql(SqlUtils.java:164) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlcommon.SqlCommonAdapter.executeSql(SqlCommonAdapter.java:46) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        ... 9 more
[06:46:59 ERROR]: [Slimefun] [SF-BLOCK_STORAGE-Write-Thread #0] Exception thrown while executing write task:
java.lang.IllegalStateException: An exception thrown while executing sql: INSERT OR IGNORE INTO block_data (data_val, loc, data_key) VALUES ('Mg==', 'world;36:70:16', 'item_max_0');
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlcommon.SqlCommonAdapter.executeSql(SqlCommonAdapter.java:48) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlite.SqliteAdapter.executeSql(SqliteAdapter.java:415) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlite.SqliteAdapter.setData(SqliteAdapter.java:98) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.controller.ADataController.lambda$scheduleWriteTask$1(ADataController.java:169) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.task.QueuedWriteTask.run(QueuedWriteTask.java:24) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: org.sqlite.SQLiteException: [SQLITE_CONSTRAINT_FOREIGNKEY] A foreign key constraint failed (FOREIGN KEY constraint failed)
        at org.sqlite.core.DB.newSQLException(DB.java:1179) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.core.DB.newSQLException(DB.java:1190) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.core.DB.execute(DB.java:985) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.core.CoreStatement.exec(CoreStatement.java:91) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.jdbc3.JDBC3Statement.lambda$execute$0(JDBC3Statement.java:55) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.jdbc3.JDBC3Statement.withConnectionTimeout(JDBC3Statement.java:454) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at org.sqlite.jdbc3.JDBC3Statement.execute(JDBC3Statement.java:43) ~[sqlite-jdbc-3.46.0.0.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlcommon.SqlUtils.execSql(SqlUtils.java:164) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        at Slimefun-DEV-SNAPSHOT.jar/com.xzavier0722.mc.plugin.slimefun4.storage.adapter.sqlcommon.SqlCommonAdapter.executeSql(SqlCommonAdapter.java:46) ~[Slimefun-DEV-SNAPSHOT.jar:?]
        ... 9 more

问题复现率

必现

复现步骤

某些附属的不正当操作
我们应该阻止这些操作,或者无视他们

服务端类型

Paper

Minecraft 版本

1.21~1.21.1

Slimefun 版本

Slimefun DEV

服务端插件列表

No response

补充信息

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions