java.sql.SQLException: поле «userid» не имеет значения по умолчанию в com.mysql.cj.jdbc.Exceptions.SQLError.createSQLException(SQLError.java:130) ~[mysql-connector-j-8.3.0. банка: 8.3.0]
@Entity
@Table(name = "users")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int userId;
}
CREATE TABLE `users` (
`user_id` int NOT NULL AUTO_INCREMENT,
`email` varchar(255) DEFAULT NULL,
`is_active` bit(1) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`registration_date` datetime(6) DEFAULT NULL,
`user_type_id` int DEFAULT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `UK_6dotkott2kjsp8vw4d0m25fb7` (`email`),
KEY `FK5snet2ikvi03wd4rabd40ckdl` (`user_type_id`),
CONSTRAINT `FK5snet2ikvi03wd4rabd40ckdl` FOREIGN KEY (`user_type_id`) REFERENCES `users_type` (`user_type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
когда я делаю вставку, я получаю эту ошибку:
Код ошибки: 1364. Поле «userid» не имеет значения по умолчанию.
В вашей таблице нет столбца userid. Если ошибка «не имеет значения по умолчанию», а не «неизвестный столбец», значит, вы вставляете данные не в таблицу users.




Причин этой ошибки может быть несколько. Давайте посмотрим поближе — ошибка исходит из базы данных и касается поля userid.
user_id, поэтому это не таблица, в которую вы вставляете запись. Возможно, Hibernate создает еще одну таблицу, и вы ее пропустите.userId. То, как это имя в верблюжьем регистре преобразуется в имя поля в базе данных, зависит от настроек и версии Hibernate. Обычно поля базы данных создаются в змеином случае, но вы должны об этом знать.hibernate.show_sql: true в application.yml или hybernate.show_sql=true, если у вас есть application.properties, и посмотрите, что он напечатает.При вводе имен наблюдается несоответствие. в классе сущности «Пользователи» это поле называется userId, но в таблице MySQL столбец называется user_id. Чтобы решить эту проблему, необходимо убедиться, что имена, используемые в классе сущностей Java, соответствуют именам в схеме таблицы базы данных. Вы можете исправить это, изменив свой класс сущности, включив в него правильное имя столбца, используя аннотацию @Column:
@Entity
@Table(name = "users")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id") // Make sure this matches the column name in your table
private int userId;
}
Вероятно, нужно сделать
userIdтипомInteger(вместо примитиваint), чтобы значение изначально могло быть нулевым.