Кириллица в названии столбца в проверке ограничения: "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 возникнет ошибка.



