fix(es_extended): widen rented_vehicles.owner to hold an identifier

The column is varchar(22), which is a leftover from Steam identifiers.
esx_vehicleshop writes a player identifier into it, and on a
multicharacter server those are 46 characters long, so renting a vehicle
out fails.

The stock vehicle is deleted from cardealer_vehicles before the insert
runs, so the dealer loses the car and the customer never gets a rental
contract. Neither side is told anything, because the handler dies on the
insert.

esx_vehicleshop's own esx_vehicleshop.sql already declares varchar(60).
This commit is contained in:
Selt
2026-07-30 00:51:15 +02:00
parent 6c50d22615
commit ad195a6516
2 changed files with 42 additions and 1 deletions
+1 -1
View File
@@ -364,7 +364,7 @@ CREATE TABLE `rented_vehicles` (
`player_name` varchar(255) NOT NULL,
`base_price` int(11) NOT NULL,
`rent_price` int(11) NOT NULL,
`owner` varchar(22) NOT NULL
`owner` varchar(60) 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].rentedVehiclesOwnerLength = function()
print("^4[esx_migration:v1.14.2:rentedVehiclesOwnerLength]^7 Checking the length of rented_vehicles.owner.")
local length = MySQL.scalar.await([[
SELECT CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'rented_vehicles'
AND COLUMN_NAME = 'owner'
]])
if not length then
print("^4[esx_migration:v1.14.2:rentedVehiclesOwnerLength]^7 Column not found, migration not needed.")
return false
end
if length >= 60 then
print(("^4[esx_migration:v1.14.2:rentedVehiclesOwnerLength]^7 Column is already varchar(%s), migration not needed."):format(length))
return false
end
print(("^4[esx_migration:v1.14.2:rentedVehiclesOwnerLength]^7 Column is varchar(%s), widening it to 60."):format(length))
MySQL.update.await([[
ALTER TABLE `rented_vehicles`
MODIFY `owner` VARCHAR(60) NOT NULL
]])
print("^4[esx_migration:v1.14.2:rentedVehiclesOwnerLength]^7 Migration complete.")
return true
end