Resource icon

Addon skript-db 0.2.0

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

Hello,
I have error :/
code_language.skript:
HikariPool-1 - Driver does not support get/set network timeout for connections. (com.mysql.jdbc.JDBC4Connection.getNetworkTimeout()I)

Edit: After two or three requests my mysql is blocked and also blocks access with phpmyadmin.
Edit: I found, the connections are not closed at each reload, could you add an effect to close a connection to the database?
I think I had a fix, but I forgot to push a new version. I'll push one this weekend.
 
  • Like
Reactions: Spartan9802
Am having this error:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''discord' SET 'coins' = '10' WHERE 'id' = 6' at line 1

When using this code:

execute "UPDATE 'discord' SET 'coins' = '10' WHERE 'id' = %{_r::id::1}%" in {sql}

Any idea as to what is causing this?
[doublepost=1516653550,1516461222][/doublepost]Bump
 
Hello,
Can you help me with my mistake?
code_language.skript:
set {test} to the database "jdbc:sqlite:/home/minecraft/multicraft/servers/WorldCube_Serveur/plugins/Landlord/Landlord.db"
code_language.skript:
HikariPool-1 - Starting...
26.01 12:51:57 [Server] INFO HikariPool-1 - Driver does not support get/set network timeout for connections. (org.sqlite.Conn.getNetworkTimeout()I)
26.01 12:51:57 [Server] ERROR HikariPool-1 - Failed to execute isValid() for connection, configure connection test query (org.sqlite.Conn.isValid(I)Z).
26.01 12:51:57 [Server] WARN java.util.concurrent.CompletionException: java.lang.AbstractMethodError: org.sqlite.Conn.isValid(I)Z
26.01 12:51:57 [Server] WARN at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
26.01 12:51:57 [Server] WARN at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
26.01 12:51:57 [Server] WARN at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1592)
26.01 12:51:57 [Server] WARN at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
26.01 12:51:57 [Server] WARN at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
26.01 12:51:57 [Server] WARN at java.lang.Thread.run(Thread.java:748)
26.01 12:51:57 [Server] WARN Caused by: java.lang.AbstractMethodError: org.sqlite.Conn.isValid(I)Z
26.01 12:51:57 [Server] WARN at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:434)
26.01 12:51:57 [Server] WARN at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:405)
26.01 12:51:57 [Server] WARN at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:363)
26.01 12:51:57 [Server] WARN at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
26.01 12:51:57 [Server] WARN at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:443)
26.01 12:51:57 [Server] WARN at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:514)
26.01 12:51:57 [Server] WARN at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:111)
26.01 12:51:57 [Server] WARN at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:97)
26.01 12:51:57 [Server] WARN at com.btk5h.skriptdb.skript.EffExecuteStatement.executeStatement(EffExecuteStatement.java:104)
26.01 12:51:57 [Server] WARN at com.btk5h.skriptdb.skript.EffExecuteStatement.lambda$execute$1(EffExecuteStatement.java:72)
26.01 12:51:57 [Server] WARN at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
26.01 12:51:57 [Server] WARN ... 3 more
 
code_language.skript:
[15:13:15] [pool-10-thread-6/WARN]: [com.zaxxer.hikari.pool.PoolBase] HikariPool-1 - Failed to validate connection com.mysql.jdbc.JDBC4Connection@49bcbb3 (No operations allowed after connection closed.)
How do I keep the addon connected to the database?
  • Is it possible to check if the connection is active?
  • Is it possible to autoreconnect?
  • Is it possible to just keep it connected?
 
code_language.skript:
[15:13:15] [pool-10-thread-6/WARN]: [com.zaxxer.hikari.pool.PoolBase] HikariPool-1 - Failed to validate connection com.mysql.jdbc.JDBC4Connection@49bcbb3 (No operations allowed after connection closed.)
How do I keep the addon connected to the database?
  • Is it possible to check if the connection is active?
  • Is it possible to autoreconnect?
  • Is it possible to just keep it connected?
This isn't possible yet. I'll add autoreconnect to a future version.
 
This isn't possible yet. I'll add autoreconnect to a future version.
While you are at it you could add a method for checking if a connection is active... Then if not you could just connect using the existing method.
 
im having troubles using variables in queries it seems like a bug but i'm not sure, here is what im trying to do:

code_language.skript:
command /equip:
        permission: *
        trigger:
                set {_u} to "ff310bf1-64c6-4f9f-9fc9-bf3fbd6bd959" #<- this should actually be uuid of player, i typed it out for testing
                send "%{_u}%"
                execute "SELECT slot FROM inventory.`%{_u}%`" in {db} and store output in {_c::*}
                send "%{_c::*}%"
I also tried variations with set {_u} to "inventory.ff310bf1-64c6-4f9f-9fc9-bf3fbd6bd959" and with or without the "`" but nothing worked besides this:

code_language.skript:
command /equip:
        permission: *
        trigger:
                set {_u} to "ff310bf1-64c6-4f9f-9fc9-bf3fbd6bd959" #<- this should actually be uuid of player, i typed it out for testing
                send "%{_u}%"
                execute "SELECT slot FROM inventory.`f310bf1-64c6-4f9f-9fc9-bf3fbd6bd959`" in {db} and store output in {_c::*}
                send "%{_c::*}%"

Edit:
it seems to work if i use the "execute unsafe" expression, if i don't and try to use the same skript i get the error "Parameter index out of range (1 > number of parameters, which is 0)"

after googling a bit i haven't really found anything i can do about this error on my end and it might be a driver issue, im using mariadb.
 
Last edited:
im having troubles using variables in queries it seems like a bug but i'm not sure, here is what im trying to do:

code_language.skript:
command /equip:
        permission: *
        trigger:
                set {_u} to "ff310bf1-64c6-4f9f-9fc9-bf3fbd6bd959" #<- this should actually be uuid of player, i typed it out for testing
                send "%{_u}%"
                execute "SELECT slot FROM inventory.`%{_u}%`" in {db} and store output in {_c::*}
                send "%{_c::*}%"
I also tried variations with set {_u} to "inventory.ff310bf1-64c6-4f9f-9fc9-bf3fbd6bd959" and with or without the "`" but nothing worked besides this:

code_language.skript:
command /equip:
        permission: *
        trigger:
                set {_u} to "ff310bf1-64c6-4f9f-9fc9-bf3fbd6bd959" #<- this should actually be uuid of player, i typed it out for testing
                send "%{_u}%"
                execute "SELECT slot FROM inventory.`f310bf1-64c6-4f9f-9fc9-bf3fbd6bd959`" in {db} and store output in {_c::*}
                send "%{_c::*}%"
I would suggest restructuring your database as creating a separate table for each user is not a common practice. However, if you really need this, you can use unsafe {_u} instead of {_u}.
 
I would suggest restructuring your database as creating a separate table for each user is not a common practice. However, if you really need this, you can use unsafe {_u} instead of {_u}.
oh, you already replied ^^

yea having uuids as table names seems to be a kinda troublesome, i might have to restructure but for now ill use the unsafe workaround

does this only happen due to the format of uuids?
 
There was a mistake.
Code:
        set {sql} to the database "mysql://localhost:3306/k8_cf?user=root&password=XBXY&useSSL=false"
        execute "select * from playerpoints22 where id = 10880" in {sql} and store the result in {output::*}
[10:44:25 WARN]: java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: com/zaxxer/hikari/pool/HikariPool
[10:44:25 WARN]: at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
[10:44:25 WARN]: at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
[10:44:25 WARN]: at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1592)
[10:44:25 WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[10:44:25 WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[10:44:25 WARN]: at java.lang.Thread.run(Thread.java:748)
[10:44:25 WARN]: Caused by: java.lang.NoClassDefFoundError: com/zaxxer/hikari/pool/HikariPool
[10:44:25 WARN]: at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:97)
[10:44:25 WARN]: at com.btk5h.skriptdb.skript.EffExecuteStatement.executeStatement(EffExecuteStatement.java:104)
[10:44:25 WARN]: at com.btk5h.skriptdb.skript.EffExecuteStatement.lambda$execute$1(EffExecuteStatement.java:72)
[10:44:25 WARN]: at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
[10:44:25 WARN]: ... 3 more
 
Do you have some idea?
1. 2. 4. 6. Did not work 3. 5. Worked
Server version
Nevest spigot 1.8.8
Skript Last version
Skript-DB Last version
Skellet Last version
1.
Code:
execute "INSERT INTO test (`username`) VALUES ('%player%')" in {sql}
2.
Code:
execute "INSERT INTO test (`username`) VALUES (%player%)" in {sql}
3.
Code:
execute "INSERT INTO test (`username`) VALUES ('%%player%%')" in {sql}
4.
Code:
execute "INSERT INTO test (`username`) VALUES (%%player%%)" in {sql}
5.
Code:
execute "INSERT INTO test (`username`) VALUES ('test')" in {sql}
6.
Code:
execute "INSERT INTO test (`username`) VALUES (test)" in {sql}

My mysql table settings

CwEb.png
 
oh, you already replied ^^

yea having uuids as table names seems to be a kinda troublesome, i might have to restructure but for now ill use the unsafe workaround

does this only happen due to the format of uuids?
I don't believe Java will replace table names in prepared statements.
Do you have some idea?
1. 2. 4. 6. Did not work 3. 5. Worked
Server version
Nevest spigot 1.8.8
Skript Last version
Skript-DB Last version
Skellet Last version
1.
Code:
execute "INSERT INTO test (`username`) VALUES ('%player%')" in {sql}
2.
Code:
execute "INSERT INTO test (`username`) VALUES (%player%)" in {sql}
3.
Code:
execute "INSERT INTO test (`username`) VALUES ('%%player%%')" in {sql}
4.
Code:
execute "INSERT INTO test (`username`) VALUES (%%player%%)" in {sql}
5.
Code:
execute "INSERT INTO test (`username`) VALUES ('test')" in {sql}
6.
Code:
execute "INSERT INTO test (`username`) VALUES (test)" in {sql}

My mysql table settings

CwEb.png
Player isn't a SQL type. Use player's name or player's uuid instead of player.
 
code_language.skript:
execute "SELECT * FROM test WHERE username = '%player%'" in {sql} and store the result in {output2::*}
broadcast "%{output::gold}%" # Should broadcast 25 instead broadcasts <none>

Can anyone help? It only broadcasts <none>.
 
@Snow-Pyon I'm confused by your reply... %player% always gives the username of the player. I'm already in the DB with data so it should broadcast correctly.
 
Last edited:
code_language.skript:
execute "SELECT * FROM test WHERE username = '%player%'" in {sql} and store the result in {output2::*}
broadcast "%{output::gold}%" # Should broadcast 25 instead broadcasts <none>

Can anyone help? It only broadcasts <none>.
code_language.skript:
execute "SELECT * FROM test WHERE username=%player's name%" in {sql} and store the result in {output2::*}
Do not surround the embedded expression with quotes. Also, you must explicitly use player's name.
 
  • Like
Reactions: IvanFakov
Can't understand how to add variables from the database

set {kdr} to {stat::deads::*} + 1

Not working