Syntax errors are quite common while coding.
But, things go for a toss when it results in website errors.
PostgreSQL error 42601 also occurs due to syntax errors in the database queries.
At Bobcares, we often get requests from PostgreSQL users to fix errors as part of our Server Management Services.
Today, let’s check PostgreSQL error in detail and see how our Support Engineers fix it for the customers.
What causes error 42601 in PostgreSQL?
PostgreSQL is an advanced database engine. It is popular for its extensive features and ability to handle complex database situations.
Applications like Instagram, Facebook, Apple, etc rely on the PostgreSQL database.
But what causes error 42601?
PostgreSQL error codes consist of five characters. The first two characters denote the class of errors. And the remaining three characters indicate a specific condition within that class.
Here, 42 in 42601 represent the class “Syntax Error or Access Rule Violation“.
In short, this error mainly occurs due to the syntax errors in the queries executed. A typical error shows up as:

Here, the syntax error has occurred in position 119 near the value “parents” in the query.
How we fix the error?
Now let’s see how our PostgreSQL engineers resolve this error efficiently.
Recently, one of our customers contacted us with this error. He tried to execute the following code,
CREATE OR REPLACE FUNCTION prc_tst_bulk(sql text)
RETURNS TABLE (name text, rowcount integer) AS
$$
BEGIN
WITH m_ty_person AS (return query execute sql)
select name, count(*) from m_ty_person where name like '%a%' group by name
union
select name, count(*) from m_ty_person where gender = 1 group by name;
END
$$ LANGUAGE plpgsql;
But, this ended up in PostgreSQL error 42601. And he got the following error message,
ERROR: syntax error at or near "return"
LINE 5: WITH m_ty_person AS (return query execute sql)
Our PostgreSQL Engineers checked the issue and found out the syntax error. The statement in Line 5 was a mix of plain and dynamic SQL. In general, the PostgreSQL query should be either fully dynamic or plain. Therefore, we changed the code as,
RETURN QUERY EXECUTE '
WITH m_ty_person AS (' || sql || $x$)
SELECT name, count(*)::int FROM m_ty_person WHERE name LIKE '%a%' GROUP BY name
UNION
SELECT name, count(*)::int FROM m_ty_person WHERE gender = 1 GROUP BY name$x$;
This resolved the error 42601, and the code worked fine.
[Need more assistance to solve PostgreSQL error 42601?- We’ll help you.]
Conclusion
In short, PostgreSQL error 42601 occurs due to the syntax errors in the code. Today, in this write-up, we have discussed how our Support Engineers fixed this error for our customers.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
GET STARTED
var google_conversion_label = «owonCMyG5nEQ0aD71QM»;
Содержание
- Ошибка Error syntax error at or near 1 в PostgreSQL: что это такое?
- PostgreSQL – что это?
- Как определить версию?
- Преимущества базы
- Пуск pgAdmin-4 и подсоединение к серверной
- Error: syntax error at or near «$1» with super simple query #539
- Comments
- PostgreSQL error 42601- How we fix it
- What causes error 42601 in PostgreSQL?
- How we fix the error?
- Conclusion
- PREVENT YOUR SERVER FROM CRASHING!
- 10 Comments
- Получение ‘error: syntax error at or near . ‘ в запросе вставки Postgresql
- 2 ответа
Ошибка 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». В результате будет выполнено подключение к локальной серверной базы.
Источник
Error: syntax error at or near «$1» with super simple query #539
any query using .query(string, [value. ], fn) gives me this error, even with the appropriate number of values, did the api change or something? Even simple stuff like:
I’m probably doing something obvious wrong 😀
The text was updated successfully, but these errors were encountered:
@visionmedia I don’t think prepared statements can be used with the create user command (or similar). I’ll see if I can find documentation to back this up.
I can’t find anything specifically to back that up from docs — so maybe I’m wrong 😦 . I do see some people who’ve tried to do that and have had experienced the same error (in java):
http://www.postgresql.org/message-id/925094a20608222109s438a5b41g2886f41e9ddf7417@mail.gmail.com
On another note if you want to do a quick check to see if query is work like you’d expect you could try the following (from the readme):
Looks like I’m not able to prepare the statement using the prepare command in the psql shell (9.3):
Ah I see, I thought the injection escaping was done by this library for .query()
Using .query with arguments string, [value. ], fn will generate a prepared statement if I’m not mistaken.
prepared statements have several benefits include performance enhancements — via cached query planning and also security — injection escaping. So the way you used the query method was just fine 🙂 Unfortunately it seems prepared statements can’t be used with the create command. :/
So you’ll want to do some injection escaping on your own, build the query string, and then just pass string, fn as the arguments to query .
Hope that helps clarify things 🙂
Cool thanks! Maybe we can add an alternative method so people don’t have to re-implement escaping outside of the library
@visionmedia It’s always fun the first time you realize PostgreSQL server doesn’t accept parameters in certain places where you’d love to have them be used. Most commands don’t accept parameters and a few places in queries you think it would be nice to use them they aren’t accepted. 😦
The good news is there are manual escaping helpers already built into node-postgres as well for the times when you want to insert user created or untrusted content into a part of a query or command where parameters aren’t accepted.
I apologize these aren’t better documented.
If you’re using the native bindings they actually use the escape written into libpq . If you’re using the pure JavaScript client the escape is as close to a direct port of the libpq escape functions as possible.
Haha yeah 😀 I’ve only used mysql/sqlite, I actually thought it was a feature of this lib. Would you be interested in some sort of method that allows escaping for cases like this? Not sure off hand what a decent method name would be
Yeah, I think it would be handy for sure. I have a few thoughts.
However it ends up it should be pretty clear about being intended for when you cannot add parameters to a query in a normal way. I think having to manually escape your inputs with hand-rolled string concatenation when they cannot be parameterized is a pain and error prone, but I don’t want it to be confused as a general purpose substitute for parameterized queries.
So I’m wondering if, like you said, it could be it’s own module. Something like pg-escape and you could use it like.
I used the ? placeholder from mysql there instead of the PostgreSQL $n placeholder because that might advertise it more as something that’s not happening within the PostgreSQL server itself? Not sure. maybe that’s ugly? Another advantage of it being it’s own module is it could contain a lovely readme file that explained something like «Generally you wanna use parameterized SQL, but sometimes commands don’t take parameters where you want. You can use this to safely escape those commands» or something.
Of course it could also just be added onto the query or client object as another method. My only hesitation with that is this module already has a lot of functionality, as you’ve probably noticed. I’m actually working right now in spinning parts of it out into other modules for better reuse and to hopefully lower the barrier of entry for collaboration. It it were stuck onto the client object it could look like this maybe.
or if the client-side escaping used the question mark placeholder you could get crazy:
Источник
PostgreSQL error 42601- How we fix it
by Sijin George | Sep 12, 2019
Syntax errors are quite common while coding.
But, things go for a toss when it results in website errors.
PostgreSQL error 42601 also occurs due to syntax errors in the database queries.
At Bobcares, we often get requests from PostgreSQL users to fix errors as part of our Server Management Services.
Today, let’s check PostgreSQL error in detail and see how our Support Engineers fix it for the customers.
What causes error 42601 in PostgreSQL?
PostgreSQL is an advanced database engine. It is popular for its extensive features and ability to handle complex database situations.
Applications like Instagram, Facebook, Apple, etc rely on the PostgreSQL database.
But what causes error 42601?
PostgreSQL error codes consist of five characters. The first two characters denote the class of errors. And the remaining three characters indicate a specific condition within that class.
Here, 42 in 42601 represent the class “Syntax Error or Access Rule Violation“.
In short, this error mainly occurs due to the syntax errors in the queries executed. A typical error shows up as:

Here, the syntax error has occurred in position 119 near the value “parents” in the query.
How we fix the error?
Now let’s see how our PostgreSQL engineers resolve this error efficiently.
Recently, one of our customers contacted us with this error. He tried to execute the following code,
But, this ended up in PostgreSQL error 42601. And he got the following error message,
Our PostgreSQL Engineers checked the issue and found out the syntax error. The statement in Line 5 was a mix of plain and dynamic SQL. In general, the PostgreSQL query should be either fully dynamic or plain. Therefore, we changed the code as,
This resolved the error 42601, and the code worked fine.
[Need more assistance to solve PostgreSQL error 42601?- We’ll help you.]
Conclusion
In short, PostgreSQL error 42601 occurs due to the syntax errors in the code. Today, in this write-up, we have discussed how our Support Engineers fixed this error for our customers.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
SELECT * FROM long_term_prediction_anomaly WHERE + “‘Timestamp’” + ‘”BETWEEN ‘” +
2019-12-05 09:10:00+ ‘”AND’” + 2019-12-06 09:10:00 + “‘;”)
Hello Joe,
Do you still get PostgreSQL errors? If you need help, we’ll be happy to talk to you on chat (click on the icon at right-bottom).
У меня ошибка drop table exists “companiya”;
CREATE TABLE “companiya” (
“compania_id” int4 NOT NULL,
“fio vladelca” text NOT NULL,
“name” text NOT NULL,
“id_operator” int4 NOT NULL,
“id_uslugi” int4 NOT NULL,
“id_reklama” int4 NOT NULL,
“id_tex-specialist” int4 NOT NULL,
“id_filial” int4 NOT NULL,
CONSTRAINT “_copy_8” PRIMARY KEY (“compania_id”)
);
CREATE TABLE “filial” (
“id_filial” int4 NOT NULL,
“street” text NOT NULL,
“house” int4 NOT NULL,
“city” text NOT NULL,
CONSTRAINT “_copy_5” PRIMARY KEY (“id_filial”)
);
CREATE TABLE “login” (
“id_name” int4 NOT NULL,
“name” char(20) NOT NULL,
“pass” char(20) NOT NULL,
PRIMARY KEY (“id_name”)
);
CREATE TABLE “operator” (
“id_operator” int4 NOT NULL,
“obrabotka obrasheniya” int4 NOT NULL,
“konsultirovanie” text NOT NULL,
“grafick work” date NOT NULL,
CONSTRAINT “_copy_2” PRIMARY KEY (“id_operator”)
);
CREATE TABLE “polsovateli” (
“id_user” int4 NOT NULL,
“id_companiya” int4 NOT NULL,
“id_obrasheniya” int4 NOT NULL,
“id_oshibka” int4 NOT NULL,
CONSTRAINT “_copy_6” PRIMARY KEY (“id_user”)
);
CREATE TABLE “reklama” (
“id_reklama” int4 NOT NULL,
“tele-marketing” text NOT NULL,
“soc-seti” text NOT NULL,
“mobile” int4 NOT NULL,
CONSTRAINT “_copy_3” PRIMARY KEY (“id_reklama”)
);
CREATE TABLE “tex-specialist” (
“id_tex-specialist” int4 NOT NULL,
“grafik” date NOT NULL,
“zarplata” int4 NOT NULL,
“ispravlenie oshibok” int4 NOT NULL,
CONSTRAINT “_copy_7” PRIMARY KEY (“id_tex-specialist”)
);
CREATE TABLE “uslugi” (
“id_uslugi” int4 NOT NULL,
“vostanavlenia parola” int4 NOT NULL,
“poterya acaunta” int4 NOT NULL,
CONSTRAINT “_copy_4” PRIMARY KEY (“id_uslugi”)
);
ALTER TABLE “companiya” ADD CONSTRAINT “fk_companiya_operator_1” FOREIGN KEY (“id_operator”) REFERENCES “operator” (“id_operator”);
ALTER TABLE “companiya” ADD CONSTRAINT “fk_companiya_uslugi_1” FOREIGN KEY (“id_uslugi”) REFERENCES “uslugi” (“id_uslugi”);
ALTER TABLE “companiya” ADD CONSTRAINT “fk_companiya_filial_1” FOREIGN KEY (“id_filial”) REFERENCES “filial” (“id_filial”);
ALTER TABLE “companiya” ADD CONSTRAINT “fk_companiya_reklama_1” FOREIGN KEY (“id_reklama”) REFERENCES “reklama” (“id_reklama”);
ALTER TABLE “companiya” ADD CONSTRAINT “fk_companiya_tex-specialist_1” FOREIGN KEY (“id_tex-specialist”) REFERENCES “tex-specialist” (“id_tex-specialist”);
ALTER TABLE “polsovateli” ADD CONSTRAINT “fk_polsovateli_companiya_1” FOREIGN KEY (“id_companiya”) REFERENCES “companiya” (“compania_id”);
ERROR: ОШИБКА: ошибка синтаксиса (примерное положение: “”companiya””)
LINE 1: drop table exists “companiya”;
^
Источник
Получение ‘error: syntax error at or near . ‘ в запросе вставки Postgresql
Я новичок в Postgresql и каждый день узнаю что-то новое. Итак, у меня есть этот блог-проект, в котором я хочу использовать PostgreSQL как базу данных. Но я как бы застрял в самом простом запросе вставки, который выдает ошибку. У меня есть три стола: posts , authors и categories . Думаю, я мог бы правильно создать таблицу, но когда я пытаюсь вставить данные, я получаю эту ошибку:
Теперь я не знаю, в чем проблема, и ошибки Postgres не так уж специфичны.
Кто-нибудь может сказать мне, где я могу ошибиться?
Вот асинхронная функция, в которой я делаю запрос на вставку:
Вот как выглядит файл журнала Postgres:
2 ответа
Ваши строковые значения не заключаются в кавычки. Это должно быть .
Вы можете добавить кавычки в свой запрос, но не делайте этого. Ваш запрос в том виде, в котором он написан, небезопасен и уязвим для атаки с использованием SQL-инъекции. Не вставляйте значения в запросы с конкатенацией строк .
Вместо этого используйте параметры.
Postgres сделает за вас расценки. Это безопаснее, надежнее и быстрее.
Обратите внимание, что an3cxZh8ZD3tdtqG4wuwPR не является допустимым UUID. UUID — это 128-битное целое число, которое часто представляется в виде 32-символьной шестнадцатеричной строки.
Обратите внимание, что вы также, вероятно, захотите использовать автоинкремент первичных ключей вместо самостоятельного создания идентификатора. Для первичного ключа UUID загрузите пакет uuid-ossp и используйте его функция UUID по умолчанию.
Источник
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 |
-- -- PostgreSQL database dump -- -- Dumped from database version 10.19 (Ubuntu 10.19-0ubuntu0.18.04.1) -- Dumped by pg_dump version 10.19 (Ubuntu 10.19-0ubuntu0.18.04.1) SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = ON; SELECT pg_catalog.set_config('search_path', '', FALSE); SET check_function_bodies = FALSE; SET xmloption = content; SET client_min_messages = warning; SET row_security = off; -- -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -- CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; -- -- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: -- COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; -- -- Name: attribute_id_seq; Type: SEQUENCE; Schema: public; Owner: bender -- CREATE SEQUENCE public.attribute_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE public.attribute_id_seq OWNER TO bender; SET default_tablespace = ''; SET default_with_oids = FALSE; -- -- Name: attribute; Type: TABLE; Schema: public; Owner: bender -- CREATE TABLE public.attribute ( attribute_id INTEGER DEFAULT NEXTVAL('public.attribute_id_seq'::regclass) NOT NULL, name CHARACTER VARYING(30) NOT NULL, attribute_type_id INTEGER NOT NULL ); ALTER TABLE public.attribute OWNER TO bender; -- -- Name: attribute_type_id_seq; Type: SEQUENCE; Schema: public; Owner: bender -- CREATE SEQUENCE public.attribute_type_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE public.attribute_type_id_seq OWNER TO bender; -- -- Name: attribute_type; Type: TABLE; Schema: public; Owner: bender -- CREATE TABLE public.attribute_type ( attribute_type_id INTEGER DEFAULT NEXTVAL('public.attribute_type_id_seq'::regclass) NOT NULL, name CHARACTER VARYING(50) NOT NULL ); ALTER TABLE public.attribute_type OWNER TO bender; -- -- Name: film_id_seq; Type: SEQUENCE; Schema: public; Owner: bender -- CREATE SEQUENCE public.film_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE public.film_id_seq OWNER TO bender; -- -- Name: film; Type: TABLE; Schema: public; Owner: bender -- CREATE TABLE public.film ( film_id INTEGER DEFAULT NEXTVAL('public.film_id_seq'::regclass) NOT NULL, name CHARACTER VARYING(50) NOT NULL ); ALTER TABLE public.film OWNER TO bender; -- -- Name: film_attributes_id_seq; Type: SEQUENCE; Schema: public; Owner: bender -- CREATE SEQUENCE public.film_attributes_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE public.film_attributes_id_seq OWNER TO bender; -- -- Name: film_attributes; Type: TABLE; Schema: public; Owner: bender -- CREATE TABLE public.film_attributes ( film_attributes_id INTEGER DEFAULT NEXTVAL('public.film_attributes_id_seq'::regclass) NOT NULL, attribute_id INTEGER NOT NULL, film_id INTEGER NOT NULL, value_text CHARACTER VARYING, value_integer INTEGER, value_float DOUBLE PRECISION, value_boolean BOOLEAN, value_timestamp TIMESTAMP WITH TIME zone ); ALTER TABLE public.film_attributes OWNER TO bender; -- -- Name: film_attributes_values; Type: VIEW; Schema: public; Owner: bender -- CREATE VIEW public.film_attributes_values AS SELECT NULL::CHARACTER VARYING(50) AS name, NULL::CHARACTER VARYING(50) AS attribute_type, NULL::CHARACTER VARYING(30) AS attribute_name, NULL::CHARACTER VARYING AS attribute_value; ALTER TABLE public.film_attributes_values OWNER TO bender; -- -- Name: film_tasks; Type: VIEW; Schema: public; Owner: bender -- CREATE VIEW public.film_tasks AS SELECT NULL::CHARACTER VARYING(50) AS name, NULL::CHARACTER VARYING[] AS today_tasks, NULL::CHARACTER VARYING[] AS twenty_days_tasks; ALTER TABLE public.film_tasks OWNER TO bender; -- -- Data for Name: attribute; Type: TABLE DATA; Schema: public; Owner: bender -- COPY public.attribute (attribute_id, name, attribute_type_id) FROM stdin; 1 Рецензии 3 3 Премия Оскар 2 4 Премия Ника 2 5 Премия Золотой Глобус 2 10 Описание фильма 3 11 Длительность (мин.) 1 12 Длительность проката (дней) 1 2 Рейтинг 7 6 Премьера в мире 6 7 Премьера в России 6 8 Старт продажи билетов 6 9 Старт проката 6 13 Окончание проката 6 . -- -- Data for Name: attribute_type; Type: TABLE DATA; Schema: public; Owner: bender -- COPY public.attribute_type (attribute_type_id, name) FROM stdin; 1 INTEGER 2 BOOLEAN 3 text 4 DATE 5 NUMERIC 6 TIMESTAMP 7 FLOAT . -- -- Data for Name: film; Type: TABLE DATA; Schema: public; Owner: bender -- COPY public.film (film_id, name) FROM stdin; 1 Spoiler-man: No Way 2 Matrix 4 . -- -- Data for Name: film_attributes; Type: TABLE DATA; Schema: public; Owner: bender -- COPY public.film_attributes (film_attributes_id, attribute_id, film_id, value_text, value_integer, value_float, value_boolean, value_timestamp) FROM stdin; 1 1 1 Годный фильм, распинаюсь про сюжет, пишу про игру актеров, все круто N N N N 2 1 2 Джон Уик уже не тот, сестры Вачовски сбрендили, полная фигня N N N N 5 3 1 f N N N N 7 6 2 N N N N 2021-12-10 00:00:00+03 9 7 2 N N N N 2021-12-30 00:00:00+03 10 8 1 N N N N 2021-12-10 00:00:00+03 11 8 2 N N N N 2021-12-07 00:00:00+03 12 12 1 N 21 N N N 13 12 2 N 14 N N N 14 9 1 N N N N 2021-12-15 00:00:00+03 15 9 2 N N N N 2021-12-15 00:00:00+03 16 13 1 N N N N 2022-01-04 00:00:00+03 17 13 2 N N N N 2022-01-04 00:00:00+03 18 3 2 t N N N N 6 6 1 N N N N 2021-12-15 00:00:00+03 8 7 1 N N N N 2022-01-04 00:00:00+03 . -- -- Name: attribute_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bender -- SELECT pg_catalog.setval('public.attribute_id_seq', 13, TRUE); -- -- Name: attribute_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bender -- SELECT pg_catalog.setval('public.attribute_type_id_seq', 6, TRUE); -- -- Name: film_attributes_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bender -- SELECT pg_catalog.setval('public.film_attributes_id_seq', 18, TRUE); -- -- Name: film_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bender -- SELECT pg_catalog.setval('public.film_id_seq', 2, TRUE); -- -- Name: attribute attribute_pkey; Type: CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.attribute ADD CONSTRAINT attribute_pkey PRIMARY KEY (attribute_id); -- -- Name: attribute_type attribute_type_name_key; Type: CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.attribute_type ADD CONSTRAINT attribute_type_name_key UNIQUE (name); -- -- Name: attribute_type attribute_type_pkey; Type: CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.attribute_type ADD CONSTRAINT attribute_type_pkey PRIMARY KEY (attribute_type_id); -- -- Name: attribute attribute_unq; Type: CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.attribute ADD CONSTRAINT attribute_unq UNIQUE (name); -- -- Name: film_attributes film_attributes_pkey; Type: CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.film_attributes ADD CONSTRAINT film_attributes_pkey PRIMARY KEY (film_attributes_id); -- -- Name: film film_pkey; Type: CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.film ADD CONSTRAINT film_pkey PRIMARY KEY (film_id); -- -- Name: film film_unq; Type: CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.film ADD CONSTRAINT film_unq UNIQUE (name); -- -- Name: attribute_index; Type: INDEX; Schema: public; Owner: bender -- CREATE INDEX attribute_index ON public.attribute USING btree (name COLLATE "C.UTF-8" varchar_ops); -- -- Name: film_index; Type: INDEX; Schema: public; Owner: bender -- CREATE INDEX film_index ON public.film USING btree (name COLLATE "C.UTF-8"); -- -- Name: attribute attribute_type_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.attribute ADD CONSTRAINT attribute_type_fkey FOREIGN KEY (attribute_type_id) REFERENCES public.attribute_type(attribute_type_id) NOT VALID; -- -- Name: film_attributes film_attribute_attribute_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.film_attributes ADD CONSTRAINT film_attribute_attribute_fkey FOREIGN KEY (attribute_id) REFERENCES public.attribute(attribute_id); -- -- Name: film_attributes film_attribute_film_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bender -- ALTER TABLE ONLY public.film_attributes ADD CONSTRAINT film_attribute_film_fkey FOREIGN KEY (film_id) REFERENCES public.film(film_id); -- -- PostgreSQL database dump complete -- |
Перейти к содержимому
При попытке восстановления дампа под Windopws 7 столкнулся с ошибкой:
COPY carriers (business_entity_id, name) FROM stdin; 8 Arriva 50000 ASEAG .
[Err] ОШИБКА: ошибка синтаксиса (примерное положение: «8»)
LINE 2: 8 Arriva
^
Мы получаем простую синтаксическую ошибку, потому что Postgres получает данные как код SQL.
Пример ниже не поддерживается утилитой pgAdmin.
COPY tablel FROM STDIN;
Как сделать резервную копию базы в Postgress?
pg_dump -U user database > fileName.sql
где:
- pg_dump — это программа для создания резервных копий базы данных Postgres Pro;
- postgres — имя пользователя БД (совпадает с именем базы данных);
- transactions — имя базы к которой есть доступ у нашего пользователя postgres;
- transactions.sql — имя создаваемого файла дампа;
- hostname — имя сервера БД, это pg.sweb.ru;
- format — формат дампа (может быть одной из трех букв: ‘с’ (custom — архив .tar.gz), ‘t’ (tar — tar-файл), ‘p’ (plain — текстовый файл). В команде букву надо указывать без кавычек.);
- dbname — имя базы данных.
pg_dump -U postgres transactions > transactions.sql
Как сделать restore в Postgress?
Тут все несколько запутанней, поэтому выкладываю все 3 варианта начну с того который решил мою проблему:
psql -U postgres -d belgianbeers -a -f beers.sql
pg_restore -h localhost -U postgres -F t -d transactions «D:/transactions.sql»
pg_restore —host localhost —port 5432 —username postgres —dbname transactions —clean —verbose «D:transactions.sql»
Не забывайте если указываете полный путь брать его в двойные кавычки!!!
Пытаюсь создать табличку, вот такую
CREATE TABLE screens_items ( screenitemid bigint NOT NULL, screenid bigint NOT NULL, resourcetype integer DEFAULT '0' NOT NULL, resourceid bigint DEFAULT '0' NOT NULL, width integer DEFAULT '320' NOT NULL, height integer DEFAULT '200' NOT NULL, x integer DEFAULT '0' NOT NULL, y integer DEFAULT '0' NOT NULL, colspan integer DEFAULT '0' NOT NULL, rowspan integer DEFAULT '0' NOT NULL, elements integer DEFAULT '25' NOT NULL, valign integer DEFAULT '0' NOT NULL, halign integer DEFAULT '0' NOT NULL, style integer DEFAULT '0' NOT NULL, url varchar(255) DEFAULT '' NOT NULL, dynamic integer DEFAULT '0' NOT NULL, sort_triggers integer DEFAULT '0' NOT NULL, application varchar(255) DEFAULT '' NOT NULL, PRIMARY KEY (screenitemid) );
Получаю
Error: ОШИБКА: ошибка синтаксиса (примерное положение: "application")
psql --version psql (PostgreSQL) 9.4.9
Вроде слово «application» не зарезервировано?
Introduction
Actually, this article has a relation with the existence of the previous article. That previous article exist in this link with the title of ‘How to Solve Error Message Model Attribute Problem SyntaxError: invalid syntax in Django Application’. It is actually just inappropriate format of the column name available in the SQL file. That SQL file actually containing an INSERT statement for restoring data to the targeted database. But since there is a column name which is not following the standard rule which starts with a character that is not number or letter, it cause the restore process to fail.
The following is just to describe that accessing the database is not the cause of the problem.
Microsoft Windows [Version 10.0.19042.1288] (c) Microsoft Corporation. All rights reserved. C:UsersPersonal>cd C:>psql -Upostgres -d db_app Password for user postgres: psql (14.0) WARNING: Console code page (437) differs from Windows code page (1252) 8-bit characters might not work correctly. See psql reference page "Notes for Windows users" for details. Type "help" for help. db_app=# q
After that, the process for inserting records by importing it or restoring it using the following command exist as follows :
C:>psql -Uuser_app -d db_app < "C:UsersPersonalDownloadsinsert-current-product.sql" Password for user db_user: ERROR: syntax error at or near "[" LINE 1: ...,[product_code... ^
As in the above command execution, it fail with an error message appear.
Solution
Actually, the solution for the above error message causing it is because of the column’s character is not a proper name for a column name. In that case, just change it into a proper one. So, edit the SQL file and find the column’s character or the column name which is the cause for the database restore process to fail. Changing the column name from [product_code] to another proper one. That new column name is ‘product_code’. After editing the file, just execute the process for importing or restoring the data once more as follows :
C:>psql -Uuser_sinergi -d db_sinergi < "C:UsersPersonalDownloadsinsert-current-product.sql" Password for user db_user: INSERT 0 556 C:>
Fortunately, the process is a success as in the output of the command above.