Кириллица в названии столбца в проверке ограничения: "ERROR 1054 (42S22): Unknown column '╨в╨╕╨┐_╤Г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓╨░'"

в MySQL пытаюсь создать следующую таблицу

CREATE TABLE Офисная_техника
(
    Название_устройства                                             VARCHAR(50)      NOT NULL,
    Тип_устройства                                                  VARCHAR(16)
        CONSTRAINT Devicetype CHECK (Тип_устройства in ('принтер', 'МФУ', 'принтер этикеток', 'ксерокс')),
    Текущее_местоположение                                          VARCHAR(50)      NOT NULL,
    Серийный_номер                                                  VARCHAR(30)      NOT NULL PRIMARY KEY,
    Ответственное_лицо                                              VARCHAR(50)
        CONSTRAINT FIO CHECK (Ответственное_лицо in ('Иванов Иван Иванович', 'Петров Петр Петрович')) DEFAULT 'Иванов Иван Иванович',
    Задействованность_устройства                                    VARCHAR(15)
        CONSTRAINT Status CHECK (Задействованность_устройства in ('используется', 'не используется')) DEFAULT 'не используется',
    Состояние_устройства                                            VARCHAR(10)
        CONSTRAINT Device_status CHECK (Состояние_устройства in ('исправно', 'не исправно'))          DEFAULT 'исправно',
    `Признаки_неисправности_устройства(если_устройство_неисправно)` TINYTEXT,
    `Причина_неисправности_устройства(если_устройство_неисправно)`  TINYTEXT,
    Количество_картриджей_в_устройстве                              TINYINT UNSIGNED NOT NULL,
    Возможность_цветной_печати                                      CHAR(1)
        CONSTRAINT YESNO CHECK (Возможность_цветной_печати in ('Y', 'N')),
    Использующиеся_цвета_картриджей                                 VARCHAR(15)
        CONSTRAINT COLORS CHECK (Использующиеся_цвета_картриджей in ('B', 'C,M,Y,K', 'C,c,M,m,Y,K', 'CMY,K')),
    CONSTRAINT emp_dev_malfunction_desc CHECK ((Состояние_устройства = 'исправно' AND
                                                (`Признаки_неисправности_устройства(если_устройство_неисправно)` = NULL AND
                                                 `Причина_неисправности_устройства(если_устройство_неисправно)` = NULL)) OR
                                               (Состояние_устройства = 'не исправно' AND
                                                (`Признаки_неисправности_устройства(если_устройство_неисправно)` <> NULL AND
                                                 `Причина_неисправности_устройства(если_устройство_неисправно)` <> NULL)))
);

но выдает следующую ошибку:

ERROR 1054 (42S22): Unknown column '╨в╨╕╨┐_╤Г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓╨░' in 'check constraint Devicetype expression'

В чем может быть причина? Знаю, что рекомендованы латинские названия столбцов, но хочу использовать именно кириллицу. Спасибо.

Не знаю может что-то в системе

введите сюда описание изображения

но при этих настройках все равно

введите сюда описание изображения

Куда копать?


Ответы (2 шт):

Автор решения: Akina
CREATE TABLE `Офисная_техника` (
`Название_устройства` VARCHAR(50) NOT NULL,
`Тип_устройства` VARCHAR(16) CONSTRAINT Devicetype CHECK (`Тип_устройства` in ('принтер','МФУ','принтер этикеток','ксерокс')),
`Текущее_местоположение` VARCHAR(50) NOT NULL,
`Серийный_номер`  VARCHAR(30) NOT NULL PRIMARY KEY,
`Ответственное_лицо` VARCHAR(50) CONSTRAINT FIO CHECK (`Ответственное_лицо` in  ('Иванов Иван Иванович','Петров Петр Петрович')) DEFAULT 'Иванов Иван Иванович',
`Задействованность_устройства` VARCHAR(15) CONSTRAINT Status CHECK(`Задействованность_устройства` in ('используется', 'не используется')) DEFAULT 'не используется',
`Состояние_устройства` VARCHAR(10) CONSTRAINT Device_status CHECK (`Состояние_устройства`  in('исправно','не исправно')) DEFAULT 'исправно',
`Признаки_неисправности_устройства(если_устройство_неисправно)` TINYTEXT,
`Причина_неисправности_устройства(если_устройство_неисправно)` TINYTEXT,
`Количество_картриджей_в_устройстве` TINYINT UNSIGNED NOT NULL,
`Возможность_цветной_печати` CHAR(1) CONSTRAINT YESNO CHECK(`Возможность_цветной_печати` in ('Y','N')),
`Использующиеся_цвета_картриджей` VARCHAR(15) CONSTRAINT COLORS CHECK(`Использующиеся_цвета_картриджей` in ('B','C,M,Y,K','C,c,M,m,Y,K','CMY,K')),
CONSTRAINT emp_dev_malfunction_desc CHECK ((`Состояние_устройства`='исправно' AND (`Признаки_неисправности_устройства(если_устройство_неисправно)` IS NULL AND `Причина_неисправности_устройства(если_устройство_неисправно)` IS NULL)) OR (`Состояние_устройства`='не исправно' AND  (`Признаки_неисправности_устройства(если_устройство_неисправно)` IS NOT NULL AND `Причина_неисправности_устройства(если_устройство_неисправно)` IS NOT NULL)))
);

введите сюда описание изображения

Кодировки, при которых запрос отработал корректно:

введите сюда описание изображения

→ Ссылка
Автор решения: kirill9494

Спасибо, большое за помощь проблема решилась добавлением в файл C:\ProgramData\MySQL\MySQL Server 8.0\my.ini опции default-character-set=utf8mb4, правда предварительно необходимо сохранить файл как ASCII иначе при перезапуске mysqld возникнет ошибка.

→ Ссылка