@Realsocks

Проблема с liquibase,выдает ошибку, что делать?

Всем привет, не так давно решил освоить инструмент для миграции данных - liquibase.
При компиляции кода(приложу ниже) возникает такая ошибка:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is liquibase.exception.ChangeLogParseException: Error parsing classpath:db/changelog/liquibase-changelog.yml


Структура:
63637dd298ffc232897085.png
Есть модель работника:
@Entity // This tells Hibernate to make a table out of this class
@Table(name = "name")
public class Employees {
    
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
    @Column
    private String name;
    @Column
    private String lastname;
    @Column
    private String secondname;
    @Column
    private String Work;
    @Column
    private String sex;
    @Column
    private String dateofbirth;
    @Column
    private String number;


Так же есть changelog.yml:
databaseChangeLog:

  - include:
      file: db/changelog/insertdata.xml


Employee.xml:
<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

    <changeSet id="01" author="Realssocks">
        <createTable tableName="employees"
                     remarks="A table to contain all employees">
            <column name="id" type="int" autoIncrement="true">
                <constraints nullable="false" unique="true" primaryKey="true"/>
            </column>
            <column name="name" type="varchar(255)">
                <constraints nullable="false" />
            </column>
            <column name="secondname" type="int">
                <constraints nullable="false"/>
            </column>
            <column name="lastname" type="int">
                <constraints nullable="false"/>
            </column>
            <column name="sex" type="int">
                <constraints nullable="false"/>
            </column>
            <column name="Work" type="int">
                <constraints nullable="false"/>
            </column>
            <column name="dateofbirth" type="int">
                <constraints nullable="false"/>
            </column>
            <column name="number" type="int">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>
</databaseChangeLog>


insertdata.xml:
<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

    <changeSet id="03" author="Realsocks">
        <comment>Inserting Employee</comment>
        <insert tableName="employee">
            <column name="id" valueNumeric="1"/>
            <column name="name" value="Kirill"/>
            <column name="secondname" value="Zheltov"/>
            <column name="lastname" value="Romanovich"/>
            <column name="sex" value="Male"/>
            <column name="Work" value="Work"/>
            <column name="dateofbirth" value="17/05/2003"/>
            <column name="number" value="0000000"/>
        </insert>
        <insert tableName="employee">
            <column name="id" valueNumeric="2"/>
            <column name="name" value="Kirill1"/>
            <column name="secondname" value="Zheltov1"/>
            <column name="lastname" value="Romanovich1"/>
            <column name="sex" value="Male1"/>
            <column name="Work" value="Work1"/>
            <column name="dateofbirth" value="17/05/20031"/>
            <column name="number" value="00000001"/>
        </insert>
        <insert tableName="employee">
            <column name="id" valueNumeric="3"/>
            <column name="name" value="Kirill2"/>
            <column name="secondname" value="Zheltov2"/>
            <column name="lastname" value="Romanovich2"/>
            <column name="sex" value="Male2"/>
            <column name="Work" value="Work2"/>
            <column name="dateofbirth" value="17/05/20032"/>
            <column name="number" value="00000002"/>
        </insert>
        <insert tableName="employee">
            <column name="id" valueNumeric="4"/>
            <column name="name" value="Kirill3"/>
            <column name="secondname" value="Zheltov3"/>
            <column name="lastname" value="Romanovich3"/>
            <column name="sex" value="Male3"/>
            <column name="Work" value="Work3"/>
            <column name="dateofbirth" value="17/05/20033"/>
            <column name="number" value="00000003"/>
        </insert>
        <insert tableName="employee">
            <column name="id" valueNumeric="5"/>
            <column name="name" value="Kirill4"/>
            <column name="secondname" value="Zheltov4"/>
            <column name="lastname" value="Romanovich4"/>
            <column name="sex" value="Male4"/>
            <column name="Work" value="Work4"/>
            <column name="dateofbirth" value="17/05/20034"/>
            <column name="number" value="00000004"/>
        </insert>
    </changeSet>
</databaseChangeLog>


Application.properties:
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.show-sql=true
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=username
spring.datasource.password=password
spring.liquibase.change-log=classpath:db/changelog/liquibase-changelog.yml
server.port=8081
spring.liquibase.enabled=true
spring.jpa.hibernate.ddl-auto=none
spring.h2.console.enabled=true


pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>19</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>

			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.liquibase</groupId>
			<artifactId>liquibase-core</artifactId>
		</dependency>
	</dependencies>



	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.liquibase</groupId>
				<artifactId>liquibase-maven-plugin</artifactId>

				<configuration>
					<propertyFile>src/main/resources/liquibase.properties</propertyFile>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>


проект делал по примеру видео-урока с ютуба, видел пару похожих вопросов, но их решения к сожалению не помогли, буду рад любой помощи!
  • Вопрос задан
  • 3015 просмотров
Пригласить эксперта
Ответы на вопрос 2
xez
@xez Куратор тега Java
TL Junior Roo
Переименуйте папку.
Чтобы была папка db в которой папка changelog.
Ответ написан
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Предположительно он просто не находит liquibase-changelog.yml. Попробуй переложить его в другое место. Или изменить путь без classpath.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы