FiveM oxmysql Connection Error คืออะไร? วิธีแก้ Unable to Establish Connection, Access Denied, Unknown Database และ Timeout
FiveM oxmysql Connection Error คือปัญหาที่ FXServer หรือ Resource ไม่สามารถเชื่อมต่อ MySQL/MariaDB ได้ตามปกติ โดยอาการอาจเกิดตั้งแต่ Unable to establish a connection, การระบุ Database ผิด, User ไม่มี Permission ไปจนถึง Database อยู่คนละเครื่องแต่ Network หรือ MariaDB ยังไม่เปิดรับ Remote Connection
oxmysql ระบุว่าเมื่อพบข้อความ Unable to establish a connection สิ่งแรกที่ควรตรวจคือ mysql_connection_string, ตรวจว่า Database มีอยู่และ Server Database กำลังทำงาน และหากมีอักขระพิเศษใน Connection String ให้ลองเปลี่ยน Format.
แนวทางแก้ที่ถูกต้องจึงไม่ใช่ Restart FiveM ซ้ำๆ แต่ต้องไล่จาก:
Database Service
↓
Host / Port
↓
Username / Password
↓
Database Name
↓
Connection String
↓
Network / Firewall
↓
oxmysql Start Order
↓
Schema / Query
① Unable to establish a connection คืออะไร
เป็น Error แบบกว้างของ oxmysql ซึ่งหมายความว่า Database Connection ยังไม่สามารถถูก Establish ได้
Official oxmysql Common Issues แนะนำให้ตรวจ:
mysql_connection_stringDatabase มีอยู่จริง
Database Server กำลังทำงาน
Connection String Format
Reserved/Special Characters
ก่อนเป็นอันดับแรก.
② อย่าเริ่มจากแก้ SQL Query
ถ้ายังขึ้น:
Unable to establish a connection
ปัญหายังอยู่ที่ Connection Layer
ดังนั้นยังไม่ควรเริ่มแก้:
SELECT ...
UPDATE ...
INSERT ...
เพราะ SQL ยังไม่มีโอกาส Execute สำเร็จจนกว่า Database Connection จะผ่านก่อน
③ ตรวจ MariaDB/MySQL ทำงานหรือไม่
เริ่มจากตรวจ Database Service
แนวคิด:
FXServer
↓
พยายามเชื่อม Database
↓
Database Service ปิด
↓
Connection Failed
MariaDB มีคู่มือ Troubleshooting Connection Issues โดยตรงสำหรับกรณี Client ไม่สามารถเชื่อม Server ได้.
④ Database เปิดแล้วไม่ได้หมายความว่า Connection ถูก
ยังต้องตรวจ:
Host
Port
User
Password
Database
ให้ตรงกับ Database Server จริง
ตัวอย่าง:
set mysql_connection_string "mysql://fivem_user:CHANGE_ME@127.0.0.1:3306/fivem"
oxmysql รองรับ Connection String แบบ URI และแบบ Semicolon-separated.
⑤ Connection String แบบ URI
ตัวอย่าง:
set mysql_connection_string "mysql://fivem_user:PASSWORD@127.0.0.1:3306/fivem"
โครงสร้าง:
mysql://
USER
:
PASSWORD
@
HOST
:
PORT
/
DATABASE
อย่านำ Password ตัวอย่างไปใช้จริง
⑥ Connection String แบบ Key/Value
อีกแบบที่ oxmysql รองรับ:
set mysql_connection_string "user=fivem_user;password=PASSWORD;host=127.0.0.1;port=3306;database=fivem"
หาก URI Format มีปัญหาจาก Special Characters สามารถลอง Format นี้ตามคำแนะนำของ oxmysql.
⑦ ต้องใช้ set หรือ setr
oxmysql Documentation ระบุให้ใช้:
set mysql_connection_string ...
และกำหนด Connection String ก่อน Start Resources ที่ต้องใช้งาน Database.
⑧ mysql_connection_string ต้องอยู่ตรงไหน
ตัวอย่างลำดับ:
set mysql_connection_string "mysql://USER:PASSWORD@127.0.0.1:3306/fivem"
ensure oxmysql
ensure framework
ensure my_resource
สิ่งสำคัญคือ Connection String ต้องถูกกำหนดก่อน Resource ที่ต้อง Query Database เริ่มทำงาน.
⑨ oxmysql ต้อง Start ก่อน Framework หรือไม่
ถ้า Framework ต้องพึ่ง oxmysql:
ต้องให้ oxmysql พร้อมก่อน
Overextended ย้ำว่า Resource Start Order ควรเป็น Logical Dependency Order และยกตัวอย่าง oxmysql เป็นหนึ่งใน Resources แรกๆ ก่อน Framework.
⑩ No such export in resource oxmysql คืออะไร
Official oxmysql Common Issues ระบุสาเหตุหลัก เช่น:
oxmysql ยังไม่ Start
ใช้ Source ที่ยังไม่ได้ Build แทน Release Build
เรียก Export ที่ไม่มีจริง
และแนะนำให้ใช้ Release ที่ถูกต้องพร้อมให้ oxmysql อยู่ต้น Resource Start Order.
⑪ ตัวอย่าง Start Order ที่เหมาะสม
ensure oxmysql
ensure ox_lib
ensure framework
ensure resource_a
ensure resource_b
ไม่ควร:
ensure resource_a
ensure framework
ensure oxmysql
หาก resource_a และ Framework ต้อง Query Database ตั้งแต่ Start
⑫ Special Character ใน Password ทำให้ต่อไม่ได้หรือไม่
เป็นไปได้
oxmysql ระบุว่า Connection String บาง Format มีอักขระ Reserved/Unsupported เช่น:
;
,
/
?
:
@
&
=
+
$
#
และแนะนำให้ลองเปลี่ยน Connection String Format.
⑬ Password มี @ ควรทำอย่างไร
สมมติ Password:
abc@123
URI:
mysql://user:abc@123@127.0.0.1:3306/fivem
สามารถตีความยากในฐานะ URL
ทางแก้หนึ่งคือใช้ Semicolon Format:
user=user;password=abc@123;host=127.0.0.1;port=3306;database=fivem
oxmysql มี Issue ที่ยืนยันว่า Semicolon Connection String สามารถช่วยกรณี Password มี Special Characters บางชนิดได้.
⑭ อย่าแชร์ Connection String จริง
ห้ามโพสต์:
mysql://root:REAL_PASSWORD@PUBLIC_IP:3306/database
ลง:
Discord
Forum
GitHub Issue
Screenshot
Public Log
ให้ปิดบัง Credential ก่อนเสมอ
⑮ Access denied for user คืออะไร
MariaDB ระบุว่า Access Denied อาจหมายถึง User ไม่มีสิทธิ์เข้าถึง Database/Schema ที่พยายามใช้งาน หรือ Authentication ไม่ตรงตามที่กำหนด.
ตัวอย่าง:
Access denied for user 'fivem_user'@'localhost'
ให้ตรวจ:
Username
Password
Host
Privileges
⑯ Username ถูกแต่ยัง Access Denied
Database Account ไม่ได้มีเพียงชื่อ User
Database สามารถพิจารณา:
user
+
host
ร่วมกัน
ดังนั้น Account:
fivem_user@localhost
อาจไม่เหมือนกับ Account ที่อนุญาต Remote Host
MariaDB มีระบบ User Account และ Host-based Authentication/Privileges สำหรับการเชื่อมต่อ.
⑰ อย่าใช้ root เป็นคำตอบแรก
Production ควรใช้ Dedicated Database User ตามสิทธิ์ที่ Application ต้องการ
แนวคิด:
fivem_app
↓
สิทธิ์เฉพาะ Database ที่ต้องใช้
แทน:
root
↓
สิทธิ์ระดับสูงมาก
ถ้า Connection Error เกิดจาก Permission ควรแก้ Permission ให้ถูก ไม่ใช่ให้สิทธิ์ Admin ทั้งหมดโดยอัตโนมัติ
⑱ Unknown database คืออะไร
MariaDB Error 1049 หมายถึง:
Unknown database 'ชื่อฐานข้อมูล'
คือ Database ที่ Connection String ระบุไม่มีอยู่บน Server นั้น.
ตัวอย่าง:
database=fivem
แต่ Database จริงชื่อ:
fivem_prod
ก็จะเกิดปัญหา
⑲ ตรวจ Database Name ให้ละเอียด
ระวังความแตกต่าง เช่น:
fivem
fivem_db
fivem-prod
fivem_prod
รวมถึงการ Connect ไป Database Server คนละเครื่อง
บางครั้งชื่อถูก แต่กำลังต่อไป Host ผิดตัว
⑳ Unknown database ไม่เกี่ยวกับ Table
ถ้า Error คือ:
Unknown database
อย่าเริ่มสร้าง Table
เพราะปัญหาคือ Database/Schema ระดับบนยังไม่มี
ลำดับคือ:
Database
↓
Tables
↓
Columns
↓
Rows
㉑ Table doesn't exist คือปัญหาอีกแบบ
ถ้า Connection สำเร็จแล้วแต่ขึ้น:
Table 'fivem.characters' doesn't exist
หมายความว่าเข้าสู่ Database ได้แล้ว แต่ Schema ของ Resource อาจยัง Import ไม่ครบ
ตรวจ:
SQL Installation File
Migration
Resource Version
Table Name
แทนการแก้ Connection String
㉒ Unknown column คืออะไร
เช่น:
Unknown column 'character_id'
บ่งชี้ว่า Connection และ Table อาจมีอยู่แล้ว แต่ Schema Version ไม่ตรงกับ Resource
ตรวจ:
Resource Update
Migration SQL
Column Rename
Database Backup
ก่อนแก้ Code
㉓ วิธีแยก Connection Error กับ Schema Error
จำ:
ต่อ Database ไม่ถึง
=
Connection Error
ต่อถึงแล้วแต่ Table/Column ผิด
=
Schema Error
นี่เป็นจุดแบ่งที่ช่วยลดเวลาวิเคราะห์ได้มาก
㉔ Database อยู่เครื่องเดียวกันควรใช้ Host อะไร
โดยทั่วไปสามารถใช้ Loopback เช่น:
127.0.0.1
หาก MariaDB/MySQL อยู่เครื่องเดียวกับ FXServer และ Config อนุญาต
แต่ค่าจริงต้องตรงกับ Infrastructure ของ Server
㉕ localhost กับ 127.0.0.1 เหมือนกันทุกกรณีไหม
ไม่ควรสมมติว่าพฤติกรรมจะเหมือนกันทุก Environment
หาก localhost มีปัญหา สามารถทดสอบ:
127.0.0.1
เพื่อแยกปัญหา Name Resolution หรือ Client Connection Behavior
㉖ Database อยู่คนละเครื่องต้องทำอะไรเพิ่ม
ต้องมีอย่างน้อย:
MariaDB รับ Remote Connection
↓
User ได้รับสิทธิ์จาก Host ที่เหมาะสม
↓
Firewall เปิด Port เฉพาะที่จำเป็น
↓
FXServer ติดต่อ IP Database ได้
MariaDB Remote Connection Guide ระบุว่าต้องตรวจ skip-networking, bind-address, User Privileges และ Firewall สำหรับ Remote Clients.
㉗ bind-address คืออะไร
เป็น Configuration ที่ควบคุม Network Interface/Address ที่ MariaDB รับ Connection
MariaDB Remote Connection Guide ระบุว่าการตั้ง bind-address และ Network Configuration เป็นส่วนสำคัญของการอนุญาต Remote Client.
㉘ bind-address 127.0.0.1 หมายถึงอะไร
ในบริบททั่วไป:
127.0.0.1
จำกัดการรับ Connection ไปยัง Loopback/Local Machine
หาก FXServer อยู่คนละเครื่องกับ Database ก็ต้องออกแบบ MariaDB Network Binding ให้รองรับ Remote Connection อย่างปลอดภัย.
㉙ อย่าเปิด Database ทุก Interface แบบไม่จำเป็น
การแก้ Connection Error ด้วยการเปิด:
0.0.0.0
อย่างเดียวโดยไม่ตั้ง:
Firewall
User Host Restrictions
Privileges
ให้เหมาะสม สามารถเพิ่ม Exposure ของ Database
เปิดเฉพาะ Network Path ที่จำเป็น
㉚ Firewall สำคัญอย่างไร
แม้ MariaDB Listen ถูกแล้ว แต่ Firewall อาจยัง Block Port
Architecture:
FXServer
↓
Network
↓
Firewall BLOCK
↓
MariaDB
ก็ยังเชื่อมไม่ได้
MariaDB Remote Connection Guide ระบุ Firewall เป็นองค์ประกอบหนึ่งที่ต้องตั้งเมื่อเปิด Remote Access.
㉛ Port MySQL/MariaDB ต้องตรงกัน
Connection String:
3306
ต้องตรงกับ Port ที่ Database Server Listen จริง
อย่าคิดว่า Database ทุกเครื่องใช้ Port เดียวกันเสมอ เพราะ Administrator สามารถเปลี่ยน Configuration ได้
㉜ Connection Timeout เกิดจากอะไร
Timeout มักเป็นอาการที่ Client ไม่สามารถรับ Response จาก Endpoint ที่ต้องการได้ในเวลาที่เหมาะสม
ตรวจ:
Host ผิด
Port ผิด
Firewall
Network Route
Database Down
Remote Server ไม่ตอบ
ก่อนเพิ่ม Timeout
㉝ อย่าเพิ่ม Timeout เป็นวิธีแก้แรก
ถ้า Host ผิด:
10.0.0.250
ต่อให้เพิ่ม Timeout จาก 10 วินาทีเป็น 30 วินาที ก็เพียงรอนานขึ้น
หลักที่ถูกต้องคือ:
Connectivity
↓
Authentication
↓
Database
↓
Query
ก่อนปรับ Timeout Tuning
㉞ Connection Refused ต่างจาก Timeout
แนวคิด:
Refused
ไปถึง Host/Port
แต่ไม่มี Service ยอมรับ
Timeout
พยายามติดต่อ
แต่ไม่มี Response ที่ต้องการ
จึงมีจุดตรวจต่างกันเล็กน้อย
㉟ Connection Error หลังเปลี่ยน Password
ตรวจ Connection String ทันที
ถ้า Password ใหม่มี Special Characters เพิ่มขึ้น ควรทดสอบ Alternate Connection String Format ตามคำแนะนำ oxmysql.
㊱ Connection Error หลังย้าย VPS
ตรวจ:
Database IP
Firewall
User Host
DNS
Port
Connection String
เพราะ Environment เปลี่ยน
แม้ Database Username/Password เดิมยังถูกต้อง Remote Host Permission หรือ Firewall อาจไม่ยอมรับ IP ใหม่
㊲ Connection Error หลังย้าย Database
ตรวจว่า FiveM ยังชี้ไป:
Host เก่า
หรือไม่
ตัวอย่าง:
host=127.0.0.1
จะผิดทันทีถ้า Database ย้ายไป Dedicated Database Server แต่ Connection String ยังไม่ได้แก้
㊳ Connection Error หลัง Update oxmysql
ตรวจ:
Release Version
Start Order
Connection String
Console Error
Dependencies
อย่าลบ Database หรือ Import Schema ใหม่เพียงเพราะ Wrapper Update แล้ว Connection ไม่ผ่าน
Database Data กับ Database Connector เป็นคนละ Layer
㊴ ควรใช้ oxmysql Release Build
Official Common Issues ระบุว่า No such export อาจเกิดจากการพยายามรัน Source ที่ยังไม่ได้ Build และแนะนำให้ดาวน์โหลด Release Build ที่ถูกต้อง.
ดังนั้น Server Production ควรใช้ Distribution ที่ถูกเตรียมไว้สำหรับรันจริง
㊵ fxmanifest.lua เกี่ยวอะไรกับ oxmysql
FiveM ใช้ fxmanifest.lua กำหนด Scripts ที่ Resource ต้องโหลด โดย server_script ใช้สำหรับ Script ฝั่ง Server.
สำหรับ Resource Lua ที่ใช้ oxmysql สามารถจัด Database Logic ใน Server-side Script แทน Client
㊶ Database Password ห้ามอยู่ client.lua
เพราะ Client Script ถูกโหลดทำงานฝั่ง Player
Database Credential ต้องถูกเก็บใน Server Configuration/Server Environment ที่เหมาะสม
ไม่ควรมี:
local databasePassword =
'MY_REAL_PASSWORD'
ใน client.lua
㊷ Database Query ควรอยู่ฝั่ง Server
Architecture:
Client
↓
Request
↓
Server Validate
↓
Database
↓
Server Process
↓
Client
ไม่ใช่:
Client
↓
Database โดยตรง
㊸ Connection ผ่านแต่ Player เข้า Server ไม่ได้
ตรวจ Resource ที่ Player Join Flow ใช้
ตัวอย่าง:
Character Load
Framework
Permission
Database Schema
Query Error
ถ้า oxmysql Connection สำเร็จแล้ว ปัญหาอาจอยู่ที่ SQL/Resource Logic ต่อไป
㊹ วิธีรู้ว่า Connection สำเร็จแล้ว
ดู Server Console ตอน Start
ถ้า oxmysql สามารถ Initialize Database Connection และ Resource Queries เริ่มทำงานโดยไม่มี Connection Error แสดงว่า Connection Layer ผ่านขั้นพื้นฐานแล้ว
จากนั้น Error ที่เหลือควรถูกวิเคราะห์ตาม Query/Schema
㊺ อย่าทดสอบด้วย Production Data โดยไม่ Backup
ถ้าต้องแก้:
Database User
Schema
Table
Migration
ให้มี Backup ก่อน โดยเฉพาะก่อน Import SQL หรือแก้ Table Structure
Connection Error ไม่ควรนำไปสู่การลบ Database แล้วสร้างใหม่ทันที
㊻ Restart Database ช่วยไหม
ช่วยได้เฉพาะกรณีที่ Service มีปัญหาจริง
แต่ถ้า:
Password ผิด
Database Name ผิด
Host ผิด
Permission ผิด
Restart MariaDB กี่ครั้งก็ไม่แก้
㊼ Restart FXServer ช่วยไหม
เช่นเดียวกัน
Restart อาจทำให้ Connection Attempt ใหม่ แต่ถ้า Configuration ผิด ปัญหาจะเกิดซ้ำ
จึงต้องอ่าน Error แล้วแก้ Root Cause
㊽ Connection Error เป็นๆ หายๆ
ควรตรวจ:
Database Availability
Network
Database Restart
Server Load
Connection Saturation
Long Queries
Disk/CPU
ไม่ใช่ Connection String อย่างเดียว
อาการ Intermittent ต่างจากกรณี Credential ผิดซึ่งมัก Fail สม่ำเสมอ
㊾ Slow Query คือ Connection Error ไหม
ไม่
Slow Query หมายถึง Query ทำงานนานหลังเชื่อมต่อ Database ได้แล้ว
oxmysql ระบุว่ามี mysql_slow_query_warning สำหรับแจ้ง Query ที่ช้า และ Slow Query อาจได้รับผลจาก Server Hitch ด้วย.
ดังนั้น:
Unable to connect
≠
Slow Query
㊿ Connection Pool เต็มกับ Query ช้าต่างกันอย่างไร
Connection Pool/Capacity เกี่ยวกับ Concurrent Database Operations
Query ช้าเกี่ยวกับเวลาที่ Operation ใช้
แต่สองเรื่องสามารถเกี่ยวกันได้:
หลาย Slow Queries
↓
ใช้ Database Connections นาน
↓
Queries ใหม่รอมากขึ้น
จึงควร Optimize SQL ก่อนเพิ่ม Connection Capacity แบบเดาสุ่ม
51. Player เยอะแล้ว Connection Error
อย่าตั้งสมมติฐานว่า:
Player เยอะ
=
ต้องเพิ่ม Connection Limit
ตรวจ:
Queries ต่อ Player
Login Burst
Autosave Burst
Slow Queries
Database CPU
Database Connections
ก่อน
52. N+1 Query ทำให้ Database หนัก
ตัวอย่าง:
for i = 1, #players do
MySQL.single.await(...)
end
100 Players:
100 Database Queries
สำหรับ Operation เดียว
การแก้ Query Architecture อาจลด Database Load ได้มากกว่าปรับ Connection Settings
53. Autosave พร้อมกันทำให้เกิด Spike
สมมติทุก 5 นาที:
Player 1 Save
Player 2 Save
Player 3 Save
...
Player 200 Save
เกิดพร้อมกัน
ควรพิจารณา:
Dirty Flag
Staggered Save
Upsert
Transaction เฉพาะที่จำเป็น
แทนเพิ่ม Connections อย่างเดียว
54. Cache ช่วยลด Connection Pressure
Pattern:
Player Login
↓
Load Database
↓
Cache
↓
Gameplay อ่าน Cache
ลด:
Gameplay Action
↓
Query Database ทุกครั้ง
Database Connection Error ที่เกิดภายใต้ Load บางครั้งต้องแก้จาก Query Volume ด้วย
55. Query ทุก Frame ห้ามทำ
ตัวอย่าง:
CreateThread(function()
while true do
MySQL.query.await(
'SELECT ...'
)
Wait(0)
end
end)
นี่ควรถูกแก้ที่ Resource Architecture
Connection Pool ที่ใหญ่ขึ้นไม่ได้ทำให้ Database กลายเป็น Runtime Variable Store
56. วิธี Debug แบบแยก Layer
ใช้ลำดับนี้:
Layer 1
Database Running?
Layer 2
Host/Port Reachable?
Layer 3
Authentication Pass?
Layer 4
Database Exists?
Layer 5
oxmysql Started?
Layer 6
Schema Correct?
Layer 7
Query Correct?
Layer 8
Performance OK?
ห้ามข้ามจาก Layer 1 ไปแก้ Layer 8
57. Checklist Connection String
ตรวจ:
ใช้
setVariable ชื่อ
mysql_connection_stringUsername ถูก
Password ถูก
Host ถูก
Port ถูก
Database ถูก
ไม่มี Quote หาย
ไม่มี Space แปลก
Special Characters ถูกจัดการ
ไม่มี Connection String หลายบรรทัดทับกันโดยไม่ตั้งใจ
Config อยู่ก่อน
ensure oxmysql
58. Checklist Database Server
ตรวจ:
MariaDB/MySQL Running
Listen Port ถูก
Database มีอยู่
User มีอยู่
Password ถูก
User มี Permission
Host Permission ถูก
Remote Access ถูกตั้ง
bind-addressถูกFirewall ถูก
Disk ไม่เต็ม
Database ไม่ Crash
MariaDB มี Troubleshooting Guide ครอบคลุมทั้ง Local Connection และ Access-denied Problems.
59. Checklist FiveM/oxmysql
ตรวจ:
ใช้ oxmysql Release ที่ถูกต้อง
oxmysqlResource มีจริงensure oxmysqlStart ก่อน Framework
Start ก่อน Resource ที่ต้องใช้ Database
Export/API ถูก
Resource Dependency ถูก
Server Console ไม่มี Start Error
Schema Resource ถูก Import
Resource Version ตรงกับ Schema
60. ตารางแยก Error ที่ควรรู้
| Error/อาการ | จุดที่ควรตรวจ |
|---|---|
| Unable to establish connection | Connection String / DB Service |
| Access denied | User / Password / Privileges |
| Unknown database | Database Name |
| Connection refused | Service / Host / Port |
| Timeout | Network / Firewall / Availability |
| No such export oxmysql | Start Order / Release |
| Table doesn't exist | Schema / SQL Import |
| Unknown column | Migration / Schema Version |
| Slow Query | SQL / Index / Workload |
MariaDB ระบุ Error Access denied และ Unknown database เป็น Error คนละประเภทอย่างชัดเจน ขณะที่ oxmysql แยก Connection Issues และ Resource Export Problems ไว้ใน Common Issues.
FiveM oxmysql Unable to establish a connection แก้อย่างไร
ใช้ลำดับ:
Database Running?
↓
Connection String ถูก?
↓
Database มีจริง?
↓
User/Password ถูก?
↓
ลอง Alternate Connection Format
↓
ตรวจ Special Characters
↓
ตรวจ oxmysql Start Order
นี่ตรงกับรายการ Troubleshooting หลักของ oxmysql.
FiveM oxmysql Access denied แก้อย่างไร
ตรวจ:
Username
Password
Database Permission
Allowed Host
MariaDB ระบุว่า Access Denied สามารถเกิดจาก User ไม่มีสิทธิ์เข้าถึง Database หรือ Authentication Account ไม่ตรง.
FiveM oxmysql Unknown database แก้อย่างไร
ตรวจค่าท้าย Connection String:
/database_name
หรือ:
database=database_name
ให้ตรงกับ Database จริง
MariaDB Error 1049 หมายถึง Database ที่ระบุไม่รู้จักหรือไม่มีอยู่.
FiveM oxmysql Connection Refused แก้อย่างไร
ตรวจ:
Database Service
Host
Port
Firewall
Bind Address
ถ้า Remote Database ต้องตรวจ MariaDB Remote Connection Configuration เพิ่ม.
FiveM oxmysql Timeout แก้อย่างไร
เริ่มจาก Connectivity
FXServer
↓
Network
↓
Firewall
↓
Database Host
↓
Database Port
อย่าเพิ่ม Timeout ก่อนพิสูจน์ว่า Network Path และ Service ถูกต้อง
FiveM oxmysql No such export แก้อย่างไร
Official Common Issues ให้ตรวจ:
oxmysql Start แล้วหรือยัง
ใช้ Release Build หรือไม่
Export Name ถูกหรือไม่
และแนะนำให้ oxmysql อยู่ต้น Resource Start Order.
FiveM Database อยู่คนละเครื่องแล้วต่อไม่ได้
ตรวจ MariaDB Remote Access:
skip-networking
bind-address
User Host Permission
Firewall
MariaDB มี Remote Client Access Guide ที่ระบุองค์ประกอบเหล่านี้โดยตรง.
FiveM Database Password มี @, # หรือ : แก้อย่างไร
oxmysql ระบุว่าอักขระบางชนิดอาจมีปัญหากับ Connection String Format และแนะนำให้ลอง Alternate Format.
ตัวอย่าง:
set mysql_connection_string "user=USER;password=PASSWORD;host=127.0.0.1;port=3306;database=fivem"
FiveM Database ต่อได้แต่ Resource Error
แปลว่า Connection Layer อาจผ่านแล้ว
ตรวจต่อ:
Tables
Columns
Resource SQL
Migration
Framework Version
อย่ากลับไปเปลี่ยน Password หาก Error จริงคือ Unknown column
FiveM Database Error หลัง Update Script
ตรวจ Migration ก่อน
Resource Version ใหม่อาจต้อง:
เพิ่ม Column
เพิ่ม Table
แก้ Index
เปลี่ยน Schema
Backup Database ก่อน Run Migration ทุกครั้ง
FiveM Database Error หลัง Restart
ถ้าก่อน Restart ปกติแต่หลัง Restart Connection ไม่ได้ ให้ตรวจ:
Database Service Start หรือยัง
FXServer Start เร็วกว่าฐานข้อมูลหรือไม่
Config ถูกโหลดหรือไม่
Environment Variable/Connection String เปลี่ยนหรือไม่
โดยเฉพาะระบบที่ Database กับ FXServer Start อัตโนมัติพร้อมกัน
FiveM Database Error เป็นบางครั้ง
ถ้าเป็น Intermittent:
Network
Database Availability
CPU/Disk Load
Long Queries
Service Restart
Connection Saturation
น่าสงสัยมากกว่า Password ผิดธรรมดา
ควรเก็บ Log เวลาที่เกิดเพื่อหา Pattern
FAQ FiveM oxmysql Connection Error
oxmysql Unable to establish a connection คืออะไร
เป็น Generic Connection Error โดย oxmysql แนะนำให้ตรวจ Connection String, Database Availability และ Alternate Connection String Format ก่อน.
Connection String FiveM ตั้งอย่างไร
ใช้ set mysql_connection_string ก่อน Start oxmysql และ Resources ที่ต้องใช้ Database.
oxmysql ต้อง Start ก่อน Framework ไหม
ถ้า Framework ต้องใช้ oxmysql ต้องให้ oxmysql Start ก่อน และ Overextended แนะนำ Resource Start Order ตาม Dependencies.
Access denied คือ Password ผิดอย่างเดียวไหม
ไม่ อาจเป็น User ไม่มี Permission เข้าถึง Database หรือ Authentication/User Host ไม่ตรงด้วย.
Unknown database คืออะไร
คือ Database ที่ระบุใน Connection ไม่มีอยู่หรือไม่ถูกต้อง.
Password มี Special Character ทำอย่างไร
ลองเปลี่ยน Connection String Format ตามคำแนะนำ oxmysql และอย่าเผย Password จริง.
Database อยู่ Remote ได้ไหม
ได้ แต่ต้องตั้ง MariaDB ให้รับ Remote Clients พร้อม User Privileges, Bind Address และ Firewall ที่เหมาะสม.
No such export oxmysql คืออะไร
มักเกี่ยวกับ oxmysql ยังไม่ Start, ใช้ Build ไม่ถูกต้อง หรือเรียก Export ที่ไม่มี.
Slow Query คือ Connection Error ไหม
ไม่ Slow Query เกิดหลัง Database Query สามารถทำงานได้แล้ว และ oxmysql มี Threshold แยกสำหรับ Slow Query Warnings.
Player เยอะแล้ว Database Error ต้องเพิ่ม Connection Limit ไหม
ไม่ควรสรุปทันที ต้องตรวจ Query Count, Slow Queries, Login Burst, Autosave และ Database Load ก่อน
ประเด็นสำคัญ
เมื่อ FiveM ขึ้น oxmysql Connection Error อย่าแก้ทุกอย่างพร้อมกัน ให้แยก Layer:
Database Running
↓
Network Reachable
↓
Authentication
↓
Database Exists
↓
oxmysql Start
↓
Schema
↓
Query
↓
Performance
oxmysql ระบุว่า Unable to establish a connection ควรเริ่มจาก mysql_connection_string, Database Availability และ Connection String Format ขณะที่ MariaDB แยก Error อย่าง Access denied และ Unknown database เป็นคนละสาเหตุอย่างชัดเจน.
ถ้า Database อยู่ Remote ต้องเพิ่มการตรวจ bind-address, User Host Permission และ Firewall เพราะ MariaDB ต้องถูกตั้งให้รับ Remote Client อย่างถูกต้อง.
สำหรับผู้อ่าน comsiam ให้จำสูตร “Service → Connection → Permission → Database → oxmysql → Schema → Query” และ comsiam แนะนำว่าอย่าลบ Database, เปลี่ยน Framework หรือเพิ่ม Connection Limitทันทีเมื่อเจอ Error เพราะข้อความ Error ส่วนใหญ่บอก Layer ที่เสียอยู่แล้ว การไล่ตามลำดับจะหา Root Cause ได้เร็วและปลอดภัยกว่ามาก
Comments
Post a Comment