fix(es_extended): widen billing.target to hold an identifier

The column is varchar(40) but esx_billing writes an identifier into it, and
those are 46 characters once multicharacter is on, so the insert fails with
1406 and the handler dies before notifying either player. The other two
identifier columns in the same table are already varchar(60).
This commit is contained in:
Selt
2026-07-28 03:06:20 +02:00
parent 5354e278de
commit 6c50d22615
2 changed files with 42 additions and 1 deletions
+1 -1
View File
@@ -89,7 +89,7 @@ CREATE TABLE `billing` (
`identifier` varchar(60) NOT NULL,
`sender` varchar(60) NOT NULL,
`target_type` varchar(50) NOT NULL,
`target` varchar(40) NOT NULL,
`target` varchar(60) NOT NULL,
`label` varchar(255) NOT NULL,
`amount` int(11) NOT NULL
) ENGINE=InnoDB;
@@ -0,0 +1,41 @@
local esxVersion = "v1.14.2"
Core.Migrations = Core.Migrations or {}
Core.Migrations[esxVersion] = Core.Migrations[esxVersion] or {}
if GetResourceKvpInt(("esx_migration:%s"):format(esxVersion)) == 1 then
return
end
---@return boolean restartRequired
Core.Migrations[esxVersion].billingTargetLength = function()
print("^4[esx_migration:v1.14.2:billingTargetLength]^7 Checking the length of billing.target.")
local length = MySQL.scalar.await([[
SELECT CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'billing'
AND COLUMN_NAME = 'target'
]])
if not length then
print("^4[esx_migration:v1.14.2:billingTargetLength]^7 Column not found, migration not needed.")
return false
end
if length >= 60 then
print(("^4[esx_migration:v1.14.2:billingTargetLength]^7 Column is already varchar(%s), migration not needed."):format(length))
return false
end
print(("^4[esx_migration:v1.14.2:billingTargetLength]^7 Column is varchar(%s), widening it to 60."):format(length))
MySQL.update.await([[
ALTER TABLE `billing`
MODIFY `target` VARCHAR(60) NOT NULL
]])
print("^4[esx_migration:v1.14.2:billingTargetLength]^7 Migration complete.")
return true
end