Подтвердить что ты не робот

MySQL Enum всегда содержит '' (пустую строку) в возможностях

Я пытаюсь создать простой "да" / "возможно" / "нет" Enum в MySQL с PhpMyAdmin Я установил NULL в No, и "возможно" в качестве значения по умолчанию

Я ожидаю ошибку при выполнении чего-то вроде "SET EnumCol = ''", потому что '' (пустая строка) не должно быть допустимым значением. Но запрос выполняется, и значение получает значение '' - это означает, что я вынужден дважды проверять это нежелательное и незаконное значение всякий раз, когда я читаю из базы данных!

Является ли это ошибкой в ​​MySQL или PhpMyAdmin? Кто-нибудь знает способ отключения этого поведения?

Спасибо.

4b9b3361

Ответ 1

Пустая строка - это индикатор ошибки недопустимых значений в ENUM. Из mysql ENUM введите руководство:

Если вы введете недопустимое значение в ENUM (то есть строку, не содержащуюся в списке допустимых значений), пустая строка будет вставлена ​​вместо этого в качестве специального значения ошибки. Эта строка может отличаться от "нормальной" пустой строки тем фактом, что эта строка имеет числовое значение 0. Об этом позже.

Чтобы отключить это поведение:

Если включен строгий режим SQL, попытки вставить неверные значения ENUM приводят к ошибке.

Чтобы включить строгий режим, см. Режимы сервера SQL.

Ответ 2

ENUM - это боль в прикладе. если вам также не нужно устанавливать значение по числу, я бы держался подальше от них.

вместо этого используйте столбец varchar с внешним ключом в таблице поиска, чтобы ограничить значения. что сделает невозможным вставить плохое значение.