Hello.
I work with postgresql.
ResultMap:
<resultMap id="user" type="dao.entity.User">
<id property="id" column="id"/>
<result property="login" column="login"/>
<result property="password" column="password"/>
<association property="userCard" column = "id" javaType = "dao.entity.UserCard"
select="mapper.users.UserMap.getUserCard" fetchType="eager"/>
</resultMap>
Insert request:
<insert id="addUser" parameterType="dao.entity.User">
<selectKey keyProperty="id,userCard.id" resultType="map" order="BEFORE">
SELECT nextVal('public.hibernate_sequence') as id;
SELECT nextVal('public.hibernate_sequence') as userCard.id;
</selectKey>
insert into users
(id,login,password)
values (
${id},
#{login},
#{password}
);
insert into users_cards (id,ref_user,surname,name,patronymic,birthday)
values (
${userCard.id},
${id},
#{userCard.surname},
#{userCard.name},
#{userCard.patronymic},
#{userCard.birthday}
);
</insert>
org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near "."
How I can set userCard.id?
I have defined the following pojo to store user information
package com.example.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
@Entity
@Table(name = "user")
public class User {
@GenericGenerator(
name = "userSequenceGenerator",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = "sequence_name", value = "userSequence"),
@Parameter(name = "initial_value", value = "1"),
@Parameter(name = "increment_size", value = "1")
}
)
@Id
@GeneratedValue(generator = "userSequenceGenerator")
private long id;
private String name;
private int age;
private String email;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
On startup of my application, i am getting the following exception
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
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
at com.Start.main(Start.java:18) [bin/:na]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:882) ~[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.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353) ~[spring-orm-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370) ~[spring-orm-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359) ~[spring-orm-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
... 16 common frames omitted
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [create table user (id int8 not null, age int4 not null, email varchar(255), name varchar(255), primary key (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.createTable(SchemaMigratorImpl.java:236) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:167) ~[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]
... 22 common frames omitted
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "user"
Position: 14
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2477) ~[postgresql-42.1.4.jar:42.1.4]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2190) ~[postgresql-42.1.4.jar:42.1.4]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:300) ~[postgresql-42.1.4.jar:42.1.4]
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428) ~[postgresql-42.1.4.jar:42.1.4]
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354) ~[postgresql-42.1.4.jar:42.1.4]
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:301) ~[postgresql-42.1.4.jar:42.1.4]
at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:287) ~[postgresql-42.1.4.jar:42.1.4]
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:264) ~[postgresql-42.1.4.jar:42.1.4]
at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:244) ~[postgresql-42.1.4.jar:42.1.4]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_71]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_71]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_71]
at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_71]
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) ~[tomcat-jdbc-8.5.16.jar:na]
at com.sun.proxy.$Proxy78.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
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS
Contact US
Thanks. We have received your request and will respond promptly.
Log In
Come Join Us!
Are you a
Computer / IT professional?
Join Tek-Tips Forums!
- Talk With Other Members
- Be Notified Of Responses
To Your Posts - Keyword Search
- One-Click Access To Your
Favorite Forums - Automated Signatures
On Your Posts - Best Of All, It’s Free!
*Tek-Tips’s functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.
Posting Guidelines
Promoting, selling, recruiting, coursework and thesis posting is forbidden.
Students Click Here
org.postgresql.util.PSQLException: ERROR: syntax error at or near «)»org.postgresql.util.PSQLException: ERROR: syntax error at or near «)»(OP) 21 May 05 06:33 I am confounded in having the following PSQLException error everytime I SUCCESSFULLY (note: i.e., successfully) attempt to programmatically insert set of values onto a table using PostgreSQL’s JDBC. In my attempt to look for the root cause, I arrived at the rather too simple an SQL INSERT statement as below which still fails to point on the underlying problem: INSERT INTO «PUBLIC».»tblJOB_PROFILE» ( «ccJOBPROFILE_NO» ) VALUES ( ’05-0038′ ); org.postgresql.util.PSQLException: ERROR: syntax error at or near «)» I even actually tried to run that straight in PGAdmin III’s Query tool to test it out. It works perfectly fine there. Where do I go wrong programmatically? =D Here’s a snippet of my code: sIns = «INSERT INTO «PUBLIC».»tblJOB_PROFILE» » + int iRowCount = pStm.executeUpdate(sIns); rs.insertRow(); — — — — — Many many thanks in advance if you can enlighten me on this. Red Flag SubmittedThank you for helping keep Tek-Tips Forums free from inappropriate posts. |
Join Tek-Tips® Today!
Join your peers on the Internet’s largest technical computer professional community.
It’s easy to join and it’s free.
Here’s Why Members Love Tek-Tips Forums:
Talk To Other Members
- Notification Of Responses To Questions
- Favorite Forums One Click Access
- Keyword Search Of All Posts, And More…
Register now while it’s still free!
Already a member? Close this window and log in.
Join Us Close
Содержание
- Re: Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near «merge».
- Ошибка Error syntax error at or near 1 в PostgreSQL: что это такое?
- PostgreSQL – что это?
- Как определить версию?
- Преимущества базы
- Пуск pgAdmin-4 и подсоединение к серверной
- Синтаксическая ошибка в или около «IF» PostgreSQL
- 1 ответы
Re: Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near «merge».
From: | Alvaro Herrera |
---|---|
To: | Vinodh NV |
Cc: | pgsql-general |
Subject: Re: Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near «merge». Date: 2018-03-07 09:34:44 Message-ID: 20180307093444.upjdj2moqep46a6u@alvherre.pgsql Views: Raw Message | Whole Thread | Download mbox | Resend email Thread: Lists: pgsql-general
Vinodh NV wrote:
> Sir,
>
> I am facing the error Caused by: org.postgresql.util.PSQLException: ERROR:
> syntax error at or near «merge». when I execute the below query in
> postgres database. The same works fine in Oracle.
>
> merge into net n using dual on (n.id=:id) when matched then update set
> Status=:status, lastStatusDate=:lastStatusDate, errorMessage=:errorMessage,
> errorDetails=:errorDetails when not matched then insert (id,Status,
> lastStatusDate, errorMessage, errorDetails) values
> (:id,:status,:lastStatusDate,:errorMessage,:errorDetails)»;
>
>
> Can you please let me know how to resolve it?
Easy — just don’t use merge with Postgres, as it doesn’t support MERGE
yet. There’s work ongoing to support it, but it will appear in Postgres
11 at the earliest.
There exists a nonstandard command INSERT ON CONFLICT DO UPDATE which
would probably be useful.
Источник
Ошибка Error syntax error at or near 1 в PostgreSQL: что это такое?
Многие пользователи сталкиваются с ошибка Error syntax error at or near 1 в PostgreSQL. Уведомления о сбое в программе обычно достаточно корректны. Скорее всего причина в том, что драйвер редактирует детали. Обычно достаточно посмотреть на журнал Postgres, где присутствуют все сведения.
PostgreSQL – что это?
Реляционная система информации, помогающая пользователям упорядочить сведения и иметь общую картину об их взаимосвязи. Информационная база имеет открытый код, и ее поддержка осуществляется на протяжение 30 летнего периода с момента разработки. Она наиболее востребованная у пользователей, из аналогичных реляционных баз данных.
Как определить версию?
Чтобы узнать серверную версию следует набрать командный путь: pg_config –version. Также можно прописать: postgres -V. А чтобы определить версию клиента необходима коанда: psql –version. Альтернативное решение sudo -u postgres psql -c ‘Select version ()’ | grep PostgreSQL.
Преимущества базы
Программа популярна. Этому есть много причин:
- полноценная совместимость SQL;
- не закрытый исходный код;
- расширенные настройки, позволяющие делать личные, индивидуальные плагины и проводить персонализацию критериев;
- можно индексировать геометрические (и по географии) объекты;
- присутствуют расширения Пост GIS;
- опция MVCС, чтобы управлять параллельным доступом путем много-версионности;
- расширяемость, дающая возможность масштабировать посредством сохраняемых процессов;
- • поддержка определенного объектно-ориентированного функционала.
Помимо этого база регулярно обновляется, что также явное преимущество для пользователей.
Пуск pgAdmin-4 и подсоединение к серверной
PgAdmin-4 будет установлен совместно с базой, для его запуска следует кликнуть на «Меню Пуск затем выбрать непосредственно саму программу и уже после пгАдмин4.
Обновленная версия обладает веб-интерфейсом, потому у пользователя произойдет запуск браузера, где и откроется программа админ4.
Чтобы подключится к только что скаченному и прошедшему процесс установки локальному серверу в серверном обозревателе надо нажать на категорию «PostgreSQL-11».
В итоге будет выполнен запуск «Connect to Server», где потребуется прописать пароль системного пользователя postgres, а именно тот пароль, который был придуман пользователем во время установки программы с базой. После того как введен пароль, нужно поставить галочку «Save Password», это позволит осуществить его сохранение, после чего не потребуется вводить его при каждом входе.
Обязательно подтвердить действие кликом на «OK». В результате будет выполнено подключение к локальной серверной базы.
Источник
Синтаксическая ошибка в или около «IF» PostgreSQL
Я пытаюсь использовать подзапрос в своем коде, но это дает мне ошибку. Я нашел много решений, но они все еще не работают:
Не могли бы вы помочь мне?
задан 04 сен ’12, 10:09
Для всех, кто читает это позже, обратите внимание, что на плакате отсутствует окружающий текст. DO определение блока или функции. Вы не можете запускать анонимные блоки PL/PgSQL в PostgreSQL, они должны быть окружены DO or CREATE [OR REPLACE] FUNCTION с LANGUAGE пункт. — Craig Ringer
1 ответы
Опустить точку с запятой после «НАЧАЛО»? Это если это тело функции plpgsql.
Если это сценарий psql, IF оператор должен быть передан plpgsql для выполнения, поэтому необходимо ввести DO $$ . $$ построить.
Или, конечно, вы можете провести рефакторинг следующим образом:
О, это похоже на решение.. но я не понимаю, как это работает. Я хочу проверить, существует ли запись, если да — ничего не делать, если нет записи вставки — как работает ваш код INSERT? — javaДевушка
INSERT не обязательно должен иметь фиксированный набор значений, он может принимать в качестве входных данных любой SELECT. Итак, часть SELECT, которую вы можете запустить самостоятельно, и она производит (‘abc’, 7) если строка не существует. Затем этот результат может быть передан в INSERT. — аракнид
Хмммм, давайте предположим, что у меня есть: INSERT INTO Table (X, Y) Values (A, B), но только в случае, если значение B не существует в столбце Y. Как будет выглядеть весь код? — javaДевушка
У меня есть еще один вопрос. как я могу использовать его в MySQL? — javaДевушка
@javaGirl извините, я не знаю о mysql. — аракнид
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками postgresql if-statement or задайте свой вопрос.
Источник
I have a Java application connecting to a PostgreSQL database.
Using straightforward code like:
ps = con.prepareStatement(sql);
if (dataTypes != null && dataTypes.size() > 0) {
for (int i = 0; i < dataTypes.size(); ++i) {
if (dataTypes.get(i) == DataTypes.NUMERIC)
ps.setLong((i + 1), Long.parseLong(values.get(i)));
else
ps.setString((i + 1), values.get(i));
}
}
rs = ps.executeQuery();
and with a query like
select ? from dummy
it just works fine. In the postgres logs what shows is:
2015-06-13 12:48:30 EEST [28294-3] xx LOG: execute <unnamed>: select $1 from dummy
2015-06-13 12:48:30 EEST [28294-4] xx DETAIL: parameters: $1 = '0'
But with a query like:
select to_char(now()+interval ? day, 'YYYYMMDD') from dummy
I get a syntax error:
Cause [org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"
and in the postgres logs:
2015-06-13 13:17:39 EEST [29311-3] xxx ERROR: syntax error at or near "$1" at character 31
2015-06-13 13:17:39 EEST [29311-4] xxx STATEMENT: select to_char(now()+interval $1 day, 'YYYYMMDD') from dummy
but in pgadmin something like
select to_char(now()+interval '0' day, 'YYYYMMDD') from dummy
works just fine without any error.
I just can’t figure out what the problem is. Why does one of the queries work but the other one doesn’t?
My PostgreSQL version is 9.4
I am creating a java web application using MyBatis and postgres.
If i execute insert query as shown below, an error will occur.
■ MyBatis xml file
<insert id = "insertRace">
insert into t_race (race_id, obstacle_flg, race_name, grade, race_number, field_type, distance, rotate_type, weather, field_condition, host_id, post_time, host_date, host_times, host_days, horse_type, age_condition, product_condition, appointed_condition, sex_condition, weight_condition, insert_date, insert_user, update_date, update_user)
values ('${raceId}', ${obstacleFlg}, '${raceName}', '${grade}', ${raceNumber}, '${fieldType}', ${distance}, '${rotateType} ',' ${weather} ',' ${fieldCondition} ',' ${hostId} ', ${postTime}, ${hostDate}, ${hostTimes}, ${hostDays}, ${horseType},' ${ageCondition} ', ${productCondition}, ${appointedCondition}, ${sexCondition}, ${weightCondition}, CURRENT_TIMESTAMP,' SYSTEM ', CURRENT_TIMESTAMP,' SYSTEM ')
</insert>
■ Errors output by postgres
ERROR: syntax error at or near ":" at character 433
STATEMENT: insert into t_race (race_id, obstacle_flg, race_name, grade, race_number, field_type, distance, rotate_type, weather, field_condition, host_id, post_time, host_date, host_times, host_days, horse_type, age_condition, product_condition, appointed_condition, sex_condition, weight_condition, insert_date, insert_user, update_date, update_user)
values ('201606020302', 0, '3 years old not won', 'not won', 2, 'dirt', 1200, 'right', 'cloudy', 'good', '06', 10:40:00, 2016-03-05, 2, 3, 1, '3 years old', 1, 2, 999, 4, CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM')
■ java console exception
### Error updating database. Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near ":"
Position: 433
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: insert into t_race (race_id, obstacle_flg, race_name, grade, race_number, field_type, distance, rotate_type, weather, field_condition, host_id, post_time, host_date, host_times, host_days, horse_type, age_condition, product_condition, appointed_condition, sex_condition, weight_condition , insert_date, insert_user, update_date, update_user) values ('201606020302', 0, '3 years old not won', 'not won', 2, 'dirt', 1200, 'right', 'cloudy', 'good', ' 06 ', 10:40:00, 2016-03-05, 2, 3, 1,' 3 years old ', 1, 2, 999, 4, CURRENT_TIMESTAMP,' SYSTEM ', CURRENT_TIMESTAMP,' SYSTEM ')
### Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near ":"
Position: 433
bad SQL grammar [];nested exception is org.postgresql.util.PSQLException: ERROR: syntax error at or near ":"
Position: 433] with root cause
org.postgresql.util.PSQLException: ERROR: syntax error at or near ":"
Position: 433
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse (QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults (QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute (QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute (AbstractJdbc2Statement.java:500)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags (AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute (AbstractJdbc2Statement.java:381)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update (PreparedStatementHandler.java:45)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update (RoutingStatementHandler.java:73)at org.apache.ibatis.executor.SimpleExecutor.doUpdate (SimpleExecutor.java:49)
at org.apache.ibatis.executor.BaseExecutor.update (BaseExecutor.java:115)
at org.apache.ibatis.executor.CachingExecutor.update (CachingExecutor.java:75)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update (DefaultSqlSession.java:170)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert (DefaultSqlSession.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:483)
at org.mybatis.spring.SqlSessionTemplate $SqlSessionInterceptor.invoke (SqlSessionTemplate.java:358)
at com.sun.proxy. $Proxy12.insert (Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert (SqlSessionTemplate.java:240)
at org.apache.ibatis.binding.MapperMethod.execute (MapperMethod.java:52)
at org.apache.ibatis.binding.MapperProxy.invoke (MapperProxy.java:53)
at com.sun.proxy. $Proxy24.insertRace (Unknown Source)
at jp.keiba.analitics.service.ScrapingDataService.insertRace (ScrapingDataService.java:169)
at jp.keiba.analitics.service.ScrapingDataService.insertAll (ScrapingDataService.java:45)
at jp.keiba.analitics.controller.scraping.UrlRaceScrpController.raceComplete (UrlRaceScrpController.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:483)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod (RequestMappingHandlerAdapter.java:817)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal (RequestMappingHandlerAdapter.java:731)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle (AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:968)at org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:859)
at javax.servlet.http.HttpServlet.service (HttpServlet.java:624)
at org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:844)
at javax.servlet.http.HttpServlet.service (HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:121)
at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol $AbstractConnectionHandler.process (AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint $SocketProcessor.run (JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor $Worker.run (ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread $WrappingRunnable.run (TaskThread.java:61)
at java.lang.Thread.run (Thread.java:745)
I don’t use»:»in the query and I’m not sure why the error message is ERROR: syntax error at or near»:».
We are very happy if you can help us.
Это стек ошибок, когда я пытаюсь вставить данные пользователя в таблицу.
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "RETURNING"
Position: 52
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2182)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1911)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:173)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:618)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:468)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:414)
at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:903)
at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:900)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
Я использую хранимые процедуры, чтобы все мое взаимодействие с БД
CREATE OR REPLACE FUNCTION ezhire."insert_user"
(
in_name character varying,
in_email character varying,
in_image_url character varying,
in_provider character varying
)
RETURNS integer AS $$
DECLARE
out_inserted_id integer;
BEGIN
WITH rows as (
INSERT INTO ezhire.user(name, email, image_url, provider)
VALUES(in_name, in_email, in_image_url, in_provider)
RETURNING id
)
SELECT id INTO out_inserted_id FROM rows;
RETURN out_inserted_id;
END;
$$ LANGUAGE plpgsql
Я не могу понять, что происходит не так …
3 ответа
Лучший ответ
Проблема была в моем весеннем коде:
Необходимо изменить этот код
public Role createRole(final Role role){
KeyHolder holder = new GeneratedKeyHolder();
PreparedStatementCreator psc = new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(
java.sql.Connection conn) throws SQLException {
PreparedStatement pstmt = conn.prepareStatement(
QUERIES.ROLE.INSERT_ROLE, new String[] { "id" });
int i = 1;
pstmt.setString(i++, role.getName());
pstmt.setString(i++, role.getAbbreviation());
pstmt.setString(i++, role.getInfo());
return pstmt;
}
};
logger.info(psc.toString());
jdbcTemplate.update(psc, holder);
Integer userId = holder.getKey().intValue();
role.setId(userId);
return role;
}
К этому:
public Role createRole(final Role role) {
PreparedStatementCreator psc = new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection conn)
throws SQLException {
PreparedStatement pstmt = conn
.prepareStatement(QUERIES.ROLE.INSERT_ROLE);
int i = 1;
pstmt.setString(i++, role.getName());
pstmt.setString(i++, role.getAbbreviation());
pstmt.setString(i++, role.getInfo());
logger.debug(pstmt.toString());
return pstmt;
}
};
Integer roleId = jdbcTemplate.query(psc,
new ResultSetExtractor<Integer>() {
@Override
public Integer extractData(ResultSet rs)
throws SQLException, DataAccessException {
if (rs.next()) {
return rs.getInt("insert_role");
}
return null;
}
});
role.setId(roleId);
return role;
}
0
Avinash Vundyala
6 Окт 2015 в 11:32
В основном у вас есть два варианта:
PL / pgSQL
Вам необходимо указать цель для значения id
:
CREATE OR REPLACE FUNCTION ezhire."insert_user"
(
in_name character varying,
in_email character varying,
in_image_url character varying,
in_provider character varying
)
RETURNS integer AS $$
DECLARE
out_inserted_id integer;
BEGIN
INSERT INTO ezhire.user(name, email, image_url, provider)
VALUES (in_name, in_email, in_image_url, in_provider)
RETURNING id INTO out_inserted_id;
RETURN out_inserted_id;
END;
$$ LANGUAGE plpgsql;
Функция SQL
Увидев, что в функции используется только чистый SQL, используйте функцию языка SQL, которую проще и быстрее написать:
CREATE OR REPLACE FUNCTION ezhire."insert_user"
(
in_name character varying,
in_email character varying,
in_image_url character varying,
in_provider character varying
)
RETURNS integer AS $$
INSERT INTO ezhire.user(name, email, image_url, provider)
VALUES (in_name, in_email, in_image_url, in_provider)
RETURNING id;
$$ LANGUAGE sql;
0
Patrick
6 Окт 2015 в 03:04
Измените часть WITH
, как показано ниже
WITH test as (
INSERT INTO ezhire.user(name, email, image_url, provider)
VALUES(in_name, in_email, in_image_url, in_provider)
RETURNING id as recentid
)
SELECT recentid INTO out_inserted_id FROM test;
(ИЛИ) сделать это без предложения WITH
, например
CREATE OR REPLACE FUNCTION ezhire."insert_user"
(
in_name character varying,
in_email character varying,
in_image_url character varying,
in_provider character varying
)
RETURNS integer AS $$
DECLARE
out_inserted_id integer;
BEGIN
INSERT INTO ezhire.user(name, email, image_url, provider)
VALUES(in_name, in_email, in_image_url, in_provider)
RETURNING id INTO out_inserted_id;
RETURN out_inserted_id;
END;
$$ LANGUAGE plpgsql
0
Rahul
5 Окт 2015 в 20:21
На чтение 2 мин Просмотров 705 Опубликовано 05.09.2022
Многие пользователи сталкиваются с ошибка Error syntax error at or near 1 в PostgreSQL. Уведомления о сбое в программе обычно достаточно корректны. Скорее всего причина в том, что драйвер редактирует детали. Обычно достаточно посмотреть на журнал Postgres, где присутствуют все сведения.
PostgreSQL – что это?
Реляционная система информации, помогающая пользователям упорядочить сведения и иметь общую картину об их взаимосвязи. Информационная база имеет открытый код, и ее поддержка осуществляется на протяжение 30 летнего периода с момента разработки. Она наиболее востребованная у пользователей, из аналогичных реляционных баз данных.
Как определить версию?
Чтобы узнать серверную версию следует набрать командный путь: pg_config –version. Также можно прописать: postgres -V. А чтобы определить версию клиента необходима коанда: psql –version. Альтернативное решение sudo -u postgres psql -c ‘Select version ()’ | grep PostgreSQL.
Преимущества базы
Программа популярна. Этому есть много причин:
- полноценная совместимость SQL;
- не закрытый исходный код;
- расширенные настройки, позволяющие делать личные, индивидуальные плагины и проводить персонализацию критериев;
- можно индексировать геометрические (и по географии) объекты;
- присутствуют расширения Пост GIS;
- опция MVCС, чтобы управлять параллельным доступом путем много-версионности;
- расширяемость, дающая возможность масштабировать посредством сохраняемых процессов;
- • поддержка определенного объектно-ориентированного функционала.
Помимо этого база регулярно обновляется, что также явное преимущество для пользователей.
Пуск pgAdmin-4 и подсоединение к серверной
PgAdmin-4 будет установлен совместно с базой, для его запуска следует кликнуть на «Меню Пуск затем выбрать непосредственно саму программу и уже после пгАдмин4.
Обновленная версия обладает веб-интерфейсом, потому у пользователя произойдет запуск браузера, где и откроется программа админ4.
Чтобы подключится к только что скаченному и прошедшему процесс установки локальному серверу в серверном обозревателе надо нажать на категорию «PostgreSQL-11».
В итоге будет выполнен запуск «Connect to Server», где потребуется прописать пароль системного пользователя postgres, а именно тот пароль, который был придуман пользователем во время установки программы с базой. После того как введен пароль, нужно поставить галочку «Save Password», это позволит осуществить его сохранение, после чего не потребуется вводить его при каждом входе.
Обязательно подтвердить действие кликом на «OK». В результате будет выполнено подключение к локальной серверной базы.