無法啓動項目Error starting

问题遇到的现象和发生背景 :無法啓動項目
遇到的现象和发生背景,请写出第一个错误信息:Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.

2023-01-05 02:05:53.604 ERROR 13808 --- [ main] o.s.boot.SpringApplication : Application startup failed

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
package com.stepforward.mirrorworld.p3_application_bean.Specification;

import java.util.ArrayList;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;
import org.hibernate.annotations.GenericGenerator;
import com.stepforward.mirrorworld.p2_base_bean.Thing_Class_Register;
import com.stepforward.mirrorworld.p2_base_bean.Thing_User_Interface;
import com.stepforward.mirrorworld.p3_application_bean.Jurisdiction.Jurisdiction;
import com.stepforward.mirrorworld.p3_application_bean.Thing.Thing;
@Entity
public class Specification_Definer extends Thing 
{
    @Id
    @GenericGenerator(name="assigned", strategy="assigned")
    @GeneratedValue(generator="assigned")
    @Column(nullable=false,length=100)
    private String Id;    
    @Column(nullable=false,length=150)
    private String Name;    
    @Column(nullable=false,length=50)
    private String Entity_Type;
    @Column(nullable=false,length=100)    
    private String Specification_Class_Id=null;//no        
    @ManyToOne(targetEntity=Unit.class)
    @JoinColumn(name="specification_unit",nullable=true)
    private Unit Specification_Unit;
    @Column(nullable=false,length=100)
    private String Specification_Definer_Type;
    @Column(nullable=true,length=10000)
    private String Specification_Definer_Persistence_String;    
    @Column(nullable=true,length=150)
    private String Code;
    @ManyToOne(targetEntity=Jurisdiction.class)
    @JoinColumn(name="jurisdiction",nullable=true)
    private Jurisdiction Jurisdiction;
    @Transient
    private ArrayList<Thing_User_Interface> Thing_UI_List=new ArrayList<Thing_User_Interface>();
    @Transient
    private String Thing_Class_Id="Specification_Definer";
    @Transient
    private Thing_Class_Register Thing_Class_Register=new Thing_Class_Register();
    public Specification_Definer() 
    {
        // TODO Auto-generated constructor stub
    }

    public String getId() 
    {
        return this.Id;
    }
    public void setId(String Id)
    {
        this.Id=Id;
    }
    public String getName()
    {
        return this.Name;
    }
    public void setName(String Name) 
    {
        this.Name = Name;
    }
    public String getEntity_Type() 
     {
         return this.Entity_Type;
     }
     public void setEntity_Type(String Entity_Type) 
     {
         this.Entity_Type = Entity_Type;
     }

    public String getSpecification_Class_Id() 
    {
        return this.Specification_Class_Id;
    }
    public void setSpecification_Class_Id(String Specification_Class_Id) 
    {
        this.Specification_Class_Id = Specification_Class_Id;
    }
    public Unit getSpecification_Unit() 
    {
        return this.Specification_Unit;
    }

    public void setSpecification_Unit(Unit Specification_Unit) 
    {
        this.Specification_Unit=Specification_Unit;
        
    }
    public String getSpecification_Definer_Type() 
    {
        return this.Specification_Definer_Type;
    }

    public void setSpecification_Definer_Type(String Specification_Definer_Type) 
    {
        this.Specification_Definer_Type = Specification_Definer_Type;
    }
    public String getSpecification_Definer_Persistence_String() 
    {
        return this.Specification_Definer_Persistence_String;
    }

    public void setSpecification_Definer_Persistence_String(String Specification_Definer_Persistence_String) 
    {
        this.Specification_Definer_Persistence_String = Specification_Definer_Persistence_String;
    }
    public String getCode() 
    {
        return this.Code;
    }
    public void setCode(String Code) 
    {
        this.Code = Code;
    }

    public Jurisdiction getJurisdiction() 
    {
        return this.Jurisdiction;
    }

    public void setJurisdiction(Jurisdiction Jurisdiction) 
    {
        this.Jurisdiction=Jurisdiction;
        
    }
    public ArrayList<Thing_User_Interface> getThing_UI_List() 
    {
        return this.Thing_UI_List;
    }    
    public void setThing_UI_List(ArrayList<Thing_User_Interface> Thing_UI_List) 
    {
        this.Thing_UI_List = Thing_UI_List;
    }
    public String getThing_Class_Id() 
    {
        return this.Thing_Class_Id;
    }
    public Thing_Class_Register getThing_Class_Register() 
    {
        return this.Thing_Class_Register;
    }

    public void setThing_Class_Register(Thing_Class_Register Thing_Class_Register) 
    {
        this.Thing_Class_Register = Thing_Class_Register;
    }
    
}


运行结果及详细报错内容
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2023-01-05 02:05:53.604 ERROR 13808 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table specification_definer add constraint FKfipunbljpmttkyl891sxkstut foreign key (specification_unit) references unit (id)]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1082) ~[spring-context-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857) ~[spring-context-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) ~[spring-boot-1.5.21.RELEASE.jar:1.5.21.RELEASE]
    at com.stepforward.mirrorworld.mirrorworldApplication.main(mirrorworldApplication.java:48) ~[classes/:na]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table specification_definer add constraint FKfipunbljpmttkyl891sxkstut foreign key (specification_unit) references unit (id)]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:371) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:336) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1688) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626) ~[spring-beans-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    ... 15 common frames omitted
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table specification_definer add constraint FKfipunbljpmttkyl891sxkstut foreign key (specification_unit) references unit (id)]
    at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:59) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlString(SchemaMigratorImpl.java:431) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlStrings(SchemaMigratorImpl.java:420) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applyForeignKeys(SchemaMigratorImpl.java:386) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:214) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:134) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:472) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:360) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:384) ~[spring-orm-4.3.24.RELEASE.jar:4.3.24.RELEASE]
    ... 19 common frames omitted
Caused by: java.sql.SQLException: Can't create table 'mirrorworld.#sql-13d0_19b' (errno: 150)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2491) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1552) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2607) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1480) ~[mysql-connector-java-5.1.47.jar:5.1.47]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
    at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) ~[tomcat-jdbc-8.5.40.jar:na]
    at com.sun.proxy.$Proxy72.executeUpdate(Unknown Source) ~[na:na]
    at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:56) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    ... 32 common frames omitted

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
把以下去掉就能啓動:
@ManyToOne(targetEntity=Unit.class)
    @JoinColumn(name="specification_unit",nullable=true)
    private Unit Specification_Unit;

@ManyToOne(targetEntity=Jurisdiction.class)
    @JoinColumn(name="jurisdiction",nullable=true)
    private Jurisdiction Jurisdiction;

補充一下:一直都沒問題,直到我把上述類以及數據表名稱由“Attribute_Specification”改成“Specification_Definer”。

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

我等会帮你debug一下代码。

看错误好像是与数据库相关的错误,创建表出错类似的问题,建议先检查配置文件中的配置是否正确,尤其是与数据库相关的那块。其次,如果你的数据表已经存在了的话, 请检查你的Entity中各个字段与已建立的数据表中的字段的是否一致,尤其是涉及到外键的地方。望采纳!!

好像是你添加了那个注解之后,hibernate会在启动的时候尝试为表添加外键,如果不需要外键可以添加下面这个注解

@JoinColumn(foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))

ConstraintMode.NO_CONSTRAINT = 约束模式:没有约束

提供参考实例【SpringBoot项目报错:"Error starting ApplicationContext...."解决办法】,链接:https://www.jb51.net/article/259544.htm

前面的都走开。

日志提示很明显,就是跟数据库相关操作的有问题

java debug输出的日志要看最后一段
日志的第4行的最后一句:
『alter table specification_definer add constraint FKfipunbljpmttkyl891sxkstut foreign key (specification_unit) references unit (id)』
修改表时,增加"Specification_Definer的specification_unit"字段约束外键引用"unit的id"存在问题
可以从这个地方入手,查看一下两个实体对应的外键的注解问题、数据库的表的外键相关字段名称或类型

这是一个 Java 类的定义。这个类可能是一个 Spring Boot 应用的启动类,也可能是应用的一个配置类。在这个类中,有一些 JPA 注解,表明这个类是一个 JPA 实体。

从这个错误信息来看,有可能是应用在启动过程中出现了问题。您可以按照提示,在启动应用时加上 debug 选项,然后查看自动配置报告,以便了解应用在启动过程中发生了什么。

还有,请注意这个类可能需要依赖注入,所以应当在应用的配置类中使用 @ComponentScan 注解来扫描这个包或者这个类所在的包。

希望这些信息对您有帮助。望采纳。

我用以下土法解決了問題:

1從零開始重新建一個與上述類(舊類)相同的新類,斷掉所有與該類的關聯,再把舊類刪掉。2把舊表的數據導出,斷掉所有與該表的關聯。3啓動 (成功)4把數據導回系統自動產生的新表。5重新恢復所有關聯。

謝謝大家的關注。