База данных Doka25C построена на MySQL/MariaDB. В будущем планируется поддержка PostgreSQL и SQLite.
Для работы Doka25C требуется MySQL (или MariaDB). Установите его при необходимости:
# Ubuntu/Debian
sudo apt update
sudo apt install mysql-server
# Windows (используйте XAMPP или WAMP)
Создайте базу данных и пользователя:
CREATE DATABASE doka25c;
CREATE USER 'dokauser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON doka25c.* TO 'dokauser'@'localhost';
FLUSH PRIVILEGES;
Настройте подключение к базе данных в файле .env, расположенном в корневой папке \.env
CI_ENVIRONMENT = production
app.baseURL = 'http://doka25c.local/'
database.default.hostname = 127.0.0.1
database.default.database = doka25c
database.default.username = dokauser
database.default.password = yourpassword
database.default.DBDriver = MySQLi
database.default.port = 3306
email.protocol = smtp
email.SMTPHost = smtp.yourmail.com
email.SMTPUser = your-email@example.com
email.SMTPPass = your-email-password
email.SMTPPort = 587
email.mailType = html
Актуальная структура таблицы users после обновления:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
role ENUM('admin', 'editor', 'user') NOT NULL DEFAULT 'user',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
auth_provider ENUM('local', 'google', 'facebook', 'vk', 'telegram') NOT NULL DEFAULT 'local',
auth_id VARCHAR(255) NULL UNIQUE,
full_name VARCHAR(255) NULL,
birth_date DATE NULL,
address TEXT NULL,
phone VARCHAR(20) NULL,
avatar VARCHAR(255) NULL,
last_login DATETIME NULL,
is_verified TINYINT(1) NOT NULL DEFAULT 0,
verification_token VARCHAR(255) NULL,
CONSTRAINT unique_auth_provider UNIQUE (auth_provider, auth_id)
);
После настройки запустите миграции:
php spark migrate
После выполнения этой команды база данных будет готова к работе.
Создайте тестовый контроллер TestDB.php
namespace App\Controllers;
use CodeIgniter\Controller;
use Config\Database;
class TestDB extends Controller {
public function index() {
$db = Database::connect();
if ($db->simpleQuery('SELECT 1')) {
return "✅ База данных подключена и работает!";
} else {
return "❌ Ошибка подключения к базе!";
}
}
}
И добавте тестовый маршрут в Routes.php, чтобы убедиться, что подключение работает:
$routes->get('/testdb', 'TestDB::index');
Откройте http://doka25c.local/testdb, чтобы проверить подключение.