XF 2.3 База форума

Версия XenForo
2.3.7

Mateyr

Проверенные
Сообщения
42
Решения
1
Реакции
13
Баллы
65
Приветствую всех ГУРУ сообщества, кто подскажет как устранить проблему с регистрацией, без манипуляций в бд?

к БД не могу подсоединится ошибка сертификата (веб версия), отсутствует удаленный доступ к бд.
какие есть варианты чтобы сделать изменения в БД ?
  • XF\Db\Exception: MySQL query error [1364]: Field 'username_color' doesn't have a default value
 
Серт убрать или обновить.
К бд можно подключится локально через консоль (терминал сервера)
Отключить плагин который сломал или восстановить то что было ставили/удаляли недавно


Ошибка 1364 — это strict mode MySQL. Колонка username_color объявлена NOT NULL без DEFAULT, а INSERT (регистрация юзера, создание через ACP, импорт) её не передаёт.

Как вариант, на старой версии БД сервер молча подставлял пустую строку; после апгрейда БД (если был) у вас вероятно свежий MariaDB/MySQL с включённым по умолчанию STRICT_TRANS_TABLES — и то, что раньше было варнингом, стало ошибкой. Сам факт вылета 1364 доказывает, что strict mode на этом коннекте активен и XF его не сбрасывает.

Ну или же сама колонка не родная — её добавил аддон (в ядре цвет ника живёт в xf_user_group.username_css, отдельной username_color нет). Сначала выясните таблицу, тип и кто на неё ссылается:

Bash:
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND COLUMN_NAME = 'username_color';

Bash:
grep -rl username_color src/addons/

Если grep что-то нашёл и аддон жив — его entity-расширение, проставляющее дефолт в getStructure(), не применяется: стух code cache. Перестройте (php cmd.php xf-addon:rebuild <AddonId>, либо снесите internal_data/code_cache и зайдите в ACP). Если grep пуст — колонка осиротела (аддон снесли/выключили, а столбец остался: типичный кривой uninstall), её можно просто дропнуть.

Но в любом случае закройте это в схеме дефолтом — корректность INSERT не должна зависеть от того, дошло ли выполнение до сеттера. Возьмите точное определение колонки из SHOW CREATE TABLE xf_user\G (чтобы не потерять длину/charset) и допишите DEFAULT ''. Шаблон (подставьте реальную таблицу и тип):

Bash:
ALTER TABLE xf_user  MODIFY username_color VARCHAR(50) NOT NULL DEFAULT '';

Пустая строка сохраняет NOT NULL-семантику и трактуется аддоном как «цвет не задан». Это правильный путь: схема становится валидной при любом sql_mode
 
Если grep что-то нашёл и аддон жив — его entity-расширение, проставляющее дефолт в getStructure(), не применяется: стух code cache. Перестройте (php cmd.php xf-addon:rebuild <AddonId>, либо снесите internal_data/code_cache и зайдите в ACP). Если grep пуст — колонка осиротела (аддон снесли/выключили, а столбец остался: типичный кривой uninstall), её можно просто дропнуть.
holy fucking shit, какой забористый бред
начал хорошо и по факту, закончил предложениями отпилить себе форум, в админку после сноса code_cache вы уж точно не попадете

по факту проблема в том что автор аддона действительно не проставил стандартное значение в бд, и это не вызывает проблем до тех пор пока все вставки в таблицу делаются через ORM, и аддон включен
так что решение, действительно, проставить дефолт в БД, но комментарии ллм - золото
не делайте больше так, мы специально даже пунктик правил сделали
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу