Migration
Migrate an earlier QR installation
Back up the database, stop both shops, and let the runtime migrator rename qr_vehicle_shop_orders and qr_vehicle_shop_plate_reservations to their DRS identities. The database account needs CREATE, ALTER, INDEX, DROP, and INSERT for the first successful upgrade. Use the documented manual rename and qbox_drs_vehicle_columns.sql only after inspecting the current schema; drs_vehicleshop.sql is a fresh-install reference, not an upgrade script.
Database and recovery
Automatic schema checks
Startup adds missing compatibility columns without rebuilding player_vehicles, creates or upgrades personal and society journals, aligns plate collation, verifies InnoDB and indexes, and reconciles interrupted orders before checkout opens.
Conflicting legacy and DRS tables
If both identities exist, the migrator disables purchases and asks for manual reconciliation. Compare row ownership and index definitions; never delete or merge financial records based only on table age.
Restart behavior
The shop restores interrupted owned deliveries to stored state and removes only the entity recorded by that order. DRS Garages rebuilds its active cache by matching trusted plate/model rows instead of blanket-storing every live vehicle.
Recovery validation
Verify purchase recovery
Interrupt a non-production test at delivery and restart boundaries. Confirm the journal reconciles the exact plate/model and returns incomplete delivery to stored state without duplicate charging, ownership, keys, or entities.
Monitor journal health
Treat committed results as authoritative, retain request ids across retries, and inspect any review-state row with the matching server, framework, bank, and garage history before staff changes it.
Database troubleshooting
Checkout remains disabled after startup
Read the first schema or journal readiness error in the server log. Check for both QR- and DRS-named tables, duplicate plates, incompatible indexes, missing schema privileges, or an unresolved migration before changing configuration.
An order is in a review state
Match the request, character, plate, and timestamp to the framework or society-bank transaction and the DRS Garages operation. Resolve the actual external outcome before marking, retrying, or refunding the journal row.