Поле ‘category_id’ не имеет значения по умолчанию в MySQL

#mysql

Вопрос:

Я изучаю SQL.
Я пытаюсь вставить данные. Моя база данных MySQL выглядит так.

 CREATE TABLE category (
  category_id CHAR(100),
  category_name VARCHAR(120) NOT NULL,
  PRIMARY KEY (category_id)
)
 

Я выполнил эту команду

 INSERT INTO category (category_name) VALUES ("test");
 

Но я получил эту ошибку

 ERROR 1364 (HY000): Field 'category_id' doesn't have a default value
 

Заранее спасибо.

Комментарии:

1. Вы пытаетесь получить идентификатор категории автоинкрементирования? Или у вас будет тот, который вы передаете?

2. Да, я хочу иметь идентификатор категории автоинкрементирования. Не могли бы вы сказать мне, как это сделать?

3. Только что ответил ниже

Ответ №1:

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

 CREATE TABLE IF NOT EXISTS category (
   `category_id` INT NOT NULL AUTO_INCREMENT, 
   `category_name` VARCHAR(120) NOT NULL, 
   PRIMARY KEY (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_unicode_ci;
 

Это позволит вам вставлять, не добавляя свой собственный идентификатор, и автоматически генерировать уникальные идентификаторы для записей.

Проблема заключалась в том, что вы установили, что ваше поле category_id не имеет значения по умолчанию, а также не допускает значение null, что означает, что вы должны задать для него значение во вставке. Если вы хотите использовать существующую таблицу, вам нужно будет сделать это:

 INSERT INTO category (category_id, category_name) VALUES ("someid", "test");