What goes wrong most often, what it actually means, and what to do about it. Most of these are load order or configuration, not faults — and the console usually names the cause. Every line Gym Creator prints starts with GYM INFO:, GYM WARNING: or GYM ERROR:, so search the console for GYM first.
Installation and Start-up#
The resource stops at boot with an error from custom/server.lua or custom/client.lua
No framework was found. Gym Creator needs es_extended, qb-core or qbx_core, and it only sees one that is already started — move your framework's ensure above the gym's in server.cfg. A framework running under another name has to be added to the list in config/main.lua (see Integrations).
"Couldn't start resource" because of onesync
The resource declares OneSync as a dependency. Add set onesync on to server.cfg, or enable it in txAdmin.
Table 'qs_gyms' doesn't exist
The database was not imported. Run database/database.sql in your database tool and restart — Gym Creator does not create its own tables.
The console keeps printing GYM INFO: Waiting for db to initialize...
oxmysql is not running or started after Gym Creator. ensure oxmysql near the top of server.cfg, and check that its connection string reaches the database.
GYM WARNING: Using standalone inventory...
Harmless. Gym Creator detected no supported inventory, and it uses no items anyway — the warning is informative only.
Locale xx does not exist, falling back to default (en)
Config.Locale names a file that is not in locales/. Use the file name without .json — 'es', 'pt', 'zh-CN'. A list of "missing key" warnings means the language file lacks newer strings; those show in English until translated.
The Creator#
"You do not have permission to use this." on /gymcreator
You are neither an admin for your framework nor in Config.CreatorJobs. On ESX only the admin and superadmin groups count; on QBCore and Qbox the god or admin permission, or the ace command. Installation shows how to add a job, and Integrations how to accept another group.
Police officers can open the creator
That is the shipped default: Config.CreatorJobs contains { job = 'police', grade = false }. Remove the entry, or set Config.CreatorJobs = {} for admin-only access.
A job in Config.CreatorJobs throws an error
grade must be false (every grade) or a list of grades such as { 2, 3 }. A bare number like grade = 3 is not accepted.
"Finish the current action first."
A placement is still in progress. Left-click to place it or press BACKSPACE to cancel, then open the creator again.
"Fill in all required fields." when saving
A gym needs a label, a blip label and coordinates for the blip and the receptionist. Every station and prop also needs a position — press Select on any that says No location selected.
"Model ... does not exist." when placing a prop
The model is not in your game. Vanilla models always work; a custom one must be streamed by a resource that starts before Gym Creator.
The placement marker does not appear where I aim
The pointer follows what the camera hits, up to 50 metres away. Get closer and aim at a solid surface such as the floor or a wall.
Gyms and Memberships#
The receptionist or a station has no prompt
The target resource started after Gym Creator, so it was not detected and the built-in [E] prompt is used — move its ensure above the gym's. Also check Config.TargetDistance: the player must be within 2 metres by default.
"You do not have an active membership here."
The player's membership is for another gym, or it has expired. A player holds one membership at a time — buying one at a second gym moves it there. Make a gym free by turning Requires membership off in the creator.
"Not enough money."
The account chosen on the membership screen — Cash or Bank — holds less than the price.
The purchase button says Active and cannot be pressed
The player already has a valid membership for this gym. It can be bought again once the expiry date shown on the screen has passed.
A new gym does not show for one player
Gyms are sent to a player once their interface has loaded. If the web/ folder is missing or incomplete, that never happens — re-copy the whole resource from the download.
Workouts and Stats#
The set completes but stats do not go up
The player is at 100, the maximum. Otherwise check the station's Stamina + and Strength + in the creator — a station set to 0 gives nothing — and the gym's multiplier.
Stats dropped overnight
That is the daily decay. Its amount is the Decay per day of the player's gym; players with no membership yet lose 5 points a night. Turn it off per gym, or for the whole server with Config.StatDecay.enabled = false. See Usage.
Decay did not run one night
It runs at the minute set in Config.StatDecay, in the server's time zone, and is not caught up later. If the server was restarting at that time, that night was skipped.
The character faces the wrong way or floats on a station
Edit the gym, press Select on that station again and place it while the clone is in the right pose — scroll to turn, arrows for height. A station is only as accurate as its placement.
An exercise skips its start or end animation
The F8 console shows GYM WARNING: Missing anim dict "...". The exercise's animation names in config/exercises.lua are wrong — usually a custom exercise with a typo.
Players do not run longer after training
Config.AffectPedStats is false, or another script is resetting MP0_STAMINA / MP0_STRENGTH. Some anti-cheats and HUDs set these stats to fixed values.
The player is stuck frozen after a restart
Restarting the resource mid-set releases the player automatically. If they are still frozen, have them reconnect.
Migrating from 1.x#
Unknown column 'identifier' in 'SELECT'
That query was written for a different layout of gym_data. Realistic Gym stores each character as citizenid plus a JSON data column — use the queries in Migrating from 1.x, which read that layout.
Illegal mix of collations
Your old gym_data table uses a different collation from the new tables. The membership query on the migration page already converts it; if you wrote your own, add COLLATE utf8mb4_unicode_ci to the join.
Out of range value for column 'membership_expiry'
A 1.x expiry date is beyond the year 2038 — usually a test value. Fix or delete that row in gym_data and run the query again.
Still stuck? Open a ticket with the lines of your server console that start with
GYM, your framework and its version, and your target resource. A screenshot of the F8 console helps for anything about the interface.



