Я долго боролся с этой ошибкой и не знаю, в чем проблема.
Я выполняю тестирование для приложения Spring, и когда я запускаю тесты, я получаю ошибку при выполнении сценария sql.
Как будто во время вставки пользователя был дубликат моего уникального имени пользователя, но я поставил a в application-test.properties create-drop.
У меня есть application.prperties в моем приложении, и приложение работает нормально, только когда начинается тестирование, я получаю эту ошибку.
Я не очень понять, насколько дубликат может быть, если для ddl задано значение -drop. Также, когда я пытаюсь вручную отбросить схему, возникает такая же ошибка.
Я также хотел бы спросить, могут ли application.properties и application-test.properties (которые используются для тестирования) вызывать проблемы друг друга, потому что что-то как это случилось со мной?
Я опубликую как можно больше информации, чтобы помочь выяснить, в чем ошибка.
Я действительно не знаю, в чем ошибка, если кто-то может помочь, я был бы благодарен. Спасибо!
Мои application-test.prperties:
spring.datasource.url = jdbc:mysql://localhost:3306/kts_test?useSSL=false&useUnicode=true&characterEncoding=utf8&createDatabaseIfNotExist=true
spring.datasource.username = root
spring.datasource.password = root
spring.jpa.show-sql = true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto = create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.datasource.data = classpath:import.sql
Просто часть моего импорта. sql:
use kts_test;
-- Test data for roles
insert into role (role_name) values ('USER');
insert into role(role_name) values ('ADMIN');
-- test data for users.
insert into user(active, confirmation_token, email, first_name, last_name, matching_password, password, username, role_id) values (true , 'tokenexamplefortest', 'test1@gmail.com', 'TestName', 'TestLastName', '$2y$12$bGfo7MFUk1LjWhD9z./97.ZIqiyR/wvJFItU3CkJoAK0qm44tqJHa', '$2y$12$bGfo7MFUk1LjWhD9z./97.ZIqiyR/wvJFItU3CkJoAK0qm44tqJHa', 'testUser', 1); -- password: test123
insert into user(active, confirmation_token, email, first_name, last_name, matching_password, password, username, role_id) values (true , 'tokenexampleforadmin', 'test_admin@gmail.com', 'TestAdmin', 'TestAdminLastName', '$2y$12$0aGkmk3OXPVatmHqicCns.tKNCpcQx3LQs3DxiGoost.ZEu7Yg28K', '$2y$12$0aGkmk3OXPVatmHqicCns.tKNCpcQx3LQs3DxiGoost.ZEu7Yg28K', 'testAdmin', 2);
-- Test data for address
insert into address(city, latitude, longitude, number, state, street) values ('Beograd', 22.3323, 0.3233, '1a', 'Srbija', 'Ljutice Bogdana');
insert into address(city, latitude, longitude, number, state, street) values ('Novi Sad', 21.3323, 12.3233, '2', 'Srbija', 'Sutjeska');
И несколько картинок моей ошибки с консоли:
Caused by: org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #4 of class path resource [import.sql]: insert into user(active, confirmation_token, email, first_name, last_name, matching_password, password, username, role_id) values (true , 'tokenexamplefortest', 'test1@gmail.com', 'TestName', 'TestLastName', '$2y$12$bGfo7MFUk1LjWhD9z./97.ZIqiyR/wvJFItU3CkJoAK0qm44tqJHa', '$2y$12$bGfo7MFUk1LjWhD9z./97.ZIqiyR/wvJFItU3CkJoAK0qm44tqJHa', 'testUser', 1); nested exception is java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 'testUser' for key 'UK_sb8bbouer5wak8vyiiy4pf2bx'