PSQLException: ОШИБКА: синтаксическая ошибка в месте или рядом с ","JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 PSQLException: ОШИБКА: синтаксическая ошибка в месте или рядом с ","

Сообщение Anonymous »

Я постоянно получаю это исключение в заголовке при попытке запустить встроенный сервер Tomcat 10 через bootRun Gradle 8 в Spring Boot 3 с Postgres 15 и Java 21.
Entity: p>

Код: Выделить всё

@Entity
@Table(name = "near_earth_object")
public class NearEarthObject {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name", columnDefinition = "VARCHAR(31)")
private String name;
@Column(name = "kilo_diam_max", columnDefinition = "NUMERIC(13,10)")
private BigDecimal kiloDiamMax;
@Column(name = "kilo_diam_min", columnDefinition = "NUMERIC(13,10)")
private BigDecimal kiloDiamMin;
@Column(name = "feet_diam_max", columnDefinition = "NUMERIC(17,10)")
private BigDecimal feetDiamMax;
@Column(name = "feet_diam_min", columnDefinition = "NUMERIC(17,10)")
private BigDecimal feetDiamMin;
@Column(name = "is_hazard", columnDefinition = "BOOLEAN")
private Boolean isHazard;
@Column(name = "close_approach_date", columnDefinition = "TIMESTAMP")
private Timestamp closeApproachDate;
@Column(name = "kilometers_per_second", columnDefinition = "NUMERIC(13,10)")
private BigDecimal kilometersPerSecond;
@Column(name = "miles_per_hour", columnDefinition = "NUMERIC(17,10)")
private BigDecimal milesPerHour;
@Column(name = "kilo_miss_dist", columnDefinition = "NUMERIC(20,10)")
private BigDecimal kiloMissDist;
@Column(name = "miles_miss_dist", columnDefinition = "NUMERIC(20,10)")
private BigDecimal milesMissDist;
@Column(name = "orbiting", columnDefinition = "VARCHAR(31)")
private String orbiting;
@Column(name = "is_sentry", columnDefinition = "BOOLEAN)")
private Boolean isSentry;

@Override
public final boolean equals(Object o) {
if (this == o) return true;
if (o == null) return false;
Class oEffectiveClass = o instanceof HibernateProxy ? ((HibernateProxy) o).getHibernateLazyInitializer().getPersistentClass() : o.getClass();
Class thisEffectiveClass = this instanceof HibernateProxy ? ((HibernateProxy) this).getHibernateLazyInitializer().getPersistentClass() : this.getClass();
if (thisEffectiveClass != oEffectiveClass) return false;
NearEarthObject that = (NearEarthObject) o;
return getId() != null && Objects.equals(getId(), that.getId());
}

@Override
public final int hashCode() {
return this instanceof HibernateProxy ? ((HibernateProxy) this).getHibernateLazyInitializer().getPersistentClass().hashCode() : getClass().hashCode();
}
}
SQL:

Код: Выделить всё

create table if not exists near_earth_object
(
id                    serial primary key,
name                  varchar(31),
kilo_diam_max         numeric(13, 10),
kilo_diam_min         numeric(13, 10),
feet_diam_max         numeric(17, 10),
feet_diam_min         numeric(17, 10),
is_hazard             boolean,
close_approach_date   timestamp,
kilometers_per_second numeric(13, 10),
miles_per_hour        numeric(17, 10),
kilo_miss_dist        numeric(20, 10),
miles_miss_dist       numeric(20, 10),
orbiting              varchar(31),
is_sentry             boolean
);
Stacktrace:

Код: Выделить всё

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table near_earth_object (feet_diam_max NUMERIC(17,10), feet_diam_min NUMERIC(17,10), is_hazard BOOLEAN, is_sentry BOOLEAN), kilo_diam_max NUMERIC(13,10), kilo_diam_min NUMERIC(13,10), kilo_miss_dist NUMERIC(20,10), kilometers_per_second NUMERIC(13,10), miles_miss_dist NUMERIC(20,10), miles_per_hour NUMERIC(17,10), close_approach_date TIMESTAMP, id bigint not null, name VARCHAR(31), orbiting VARCHAR(31), primary key (id))"  via JDBC [ERROR: syntax error at or near ","
Position:  130]
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createTables(SchemaCreatorImpl.java:428) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createSequencesTablesConstraints(SchemaCreatorImpl.java:344) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:239) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:250) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:144) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at java.base/java.util.HashMap.forEach(HashMap.java:1429) ~[na:na]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:141) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:324) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:463) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1506) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:66) ~[spring-orm-6.2.1.jar:6.2.1]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.2.1.jar:6.2.1]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:419) ~[spring-orm-6.2.1.jar:6.2.1]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:400) ~[spring-orm-6.2.1.jar:6.2.1]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.2.1.jar:6.2.1]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855) ~[spring-beans-6.2.1.jar:6.2.1]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-6.2.1.jar:6.2.1]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-6.2.1.jar:6.2.1]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[spring-beans-6.2.1.jar:6.2.1]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336) ~[spring-beans-6.2.1.jar:6.2.1]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:289) ~[spring-beans-6.2.1.jar:6.2.1]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)  ~[spring-beans-6.2.1.jar:6.2.1]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) ~[spring-beans-6.2.1.jar:6.2.1]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:970) ~[spring-context-6.2.1.jar:6.2.1]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) ~[spring-context-6.2.1.jar:6.2.1]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.4.1.jar:3.4.1]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-3.4.1.jar:3.4.1]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.4.1.jar:3.4.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.4.1.jar:3.4.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) ~[spring-boot-3.4.1.jar:3.4.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) ~[spring-boot-3.4.1.jar:3.4.1]
at org.borthick.neotracker.NeoTrackerApplication.main(NeoTrackerApplication.java:10) ~[main/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.4.1.jar:3.4.1]
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near ","
Position: 130
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) ~[postgresql-42.7.4.jar:42.7.4]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) ~[postgresql-42.7.4.jar:42.7.4]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) ~[postgresql-42.7.4.jar:42.7.4]
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) ~[postgresql-42.7.4.jar:42.7.4]
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) ~[postgresql-42.7.4.jar:42.7.4]
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:356) ~[postgresql-42.7.4.jar:42.7.4]
at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:341) ~[postgresql-42.7.4.jar:42.7.4]
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:317) ~[postgresql-42.7.4.jar:42.7.4]
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:312) ~[postgresql-42.7.4.jar:42.7.4]
at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-5.1.0.jar:na]
at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-5.1.0.jar:na]
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
... 42 common frames omitted
Application.properties:

Код: Выделить всё

server.port=80
server.address=127.0.0.1
server.forward-headers-strategy=FRAMEWORK

spring.application.name=NeoTracker
spring.jpa.database=POSTGRESQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create

spring.datasource.url=jdbc:postgresql://localhost/postgres
spring.datasource.username=postgres
spring.datasource.password=1

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
Иерархия проблем на панели «Выполнить» показывает ошибку заголовка, трассировка стека находится в «:bootRun».
Не знаю, если это имеет значение, но исходный синтаксис создания таблицы не содержал части «если не существует», именно так оно и есть в файле DDL в папке ресурсов. Я вижу, что создание происходит не в том порядке, в каком я его создал, и в нечетных местах есть круглые скобки, но я не уверен, что это значит.
Я включил некоторые из другие инструменты, которые я использую, указаны в тегах на случай, если они будут иметь значение.

Подробнее здесь: https://stackoverflow.com/questions/793 ... at-or-near
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»