Как подключить SQL-базу SAMP: MySQL, плагин и проверка

SQL-базу к SAMP обычно подключают через MySQL-плагин для сервера. Общая схема такая: ставите MySQL или MariaDB, создаете базу и пользователя, подключаете плагин в SAMP, прописываете параметры доступа в скрипте или конфиге, затем проверяете лог сервера

Точные названия функций зависят от версии плагина и модового скрипта. Поэтому копировать чужой код без проверки версии нельзя: в одном моде подключение может называться mysql_connect, в другом использовать другой API или include

Что должно быть готово

Минимальный набор:

  • установлен MySQL или MariaDB
  • создана база данных
  • создан пользователь с паролем
  • SAMP-сервер видит MySQL-плагин
  • в моде подключен нужный include
  • в логах нет ошибок загрузки плагина

Сначала проверьте MySQL отдельно. Если база не открывается через обычный клиент, SAMP тоже не подключится

Создать базу и пользователя

Пример для MySQL:

CREATE DATABASE samp_server CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'samp_user'@'localhost' IDENTIFIED BY 'strong_password';

GRANT ALL PRIVILEGES ON samp_server.* TO 'samp_user'@'localhost';

FLUSH PRIVILEGES;

Для рабочей игры не используйте пользователя root. Создайте отдельного пользователя только для этой базы

Создать тестовую таблицу

Например, таблицу игроков:

USE samp_server;

CREATE TABLE players (
    id int NOT NULL AUTO_INCREMENT,
    nickname varchar(32) NOT NULL,
    money int NOT NULL DEFAULT 0,
    created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY ux_players_nickname (nickname)
);

Проверьте, что таблица появилась:

SHOW TABLES;

Подключение в SAMP-скрипте

Условный пример логики:

new MySQL:g_SQL;

public OnGameModeInit()
{
    g_SQL = mysql_connect("localhost", "samp_user", "strong_password", "samp_server");

    if (mysql_errno(g_SQL) != 0)
    {
        print("MySQL connection failed");
    }
    else
    {
        print("MySQL connected");
    }

    return 1;
}

Это пример принципа, а не универсальная вставка для любого сервера. Сверяйте сигнатуру функций с документацией именно вашего MySQL-плагина. У разных версий могут отличаться аргументы, обработка ошибок и callbacks

Что смотреть в логах

После запуска сервера проверьте:

  • загрузился ли MySQL-плагин
  • нет ли ошибки доступа к базе
  • правильно ли указан host
  • совпадают ли имя базы, пользователь и пароль
  • не блокирует ли подключение firewall

Если MySQL стоит на той же машине, host часто localhost или 127.0.0.1. Если база на другом сервере, нужно разрешить удаленное подключение и открыть порт MySQL, но делать это нужно осторожно

Мини-практика

Создайте базу samp_server, таблицу players, добавьте тестового игрока и прочитайте его через SQL-клиент:

INSERT INTO players (nickname, money)
VALUES ('TestPlayer', 1000);

SELECT *
FROM players
WHERE nickname = 'TestPlayer';

Если этот запрос работает в MySQL-клиенте, переходите к подключению SAMP. Так вы не будете искать ошибку в скрипте, когда проблема на самом деле в базе или пользователе

Частые ошибки

  • Не загружается MySQL-плагин SAMP
  • Неверно указаны пользователь, пароль или имя базы
  • Используется root вместо отдельного пользователя
  • Таблицы не созданы до запуска мода
  • Версия include не совпадает с версией плагина
  • MySQL слушает только локальные подключения, а сервер SAMP стоит на другой машине

Что почитать дальше по SQL

Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x