Содержание
- Ошибка Error syntax error at or near 1 в PostgreSQL: что это такое?
- PostgreSQL – что это?
- Как определить версию?
- Преимущества базы
- Пуск pgAdmin-4 и подсоединение к серверной
- Получение ‘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 . ‘ в запросе вставки Postgresql
Я новичок в Postgresql и каждый день узнаю что-то новое. Итак, у меня есть этот блог-проект, в котором я хочу использовать PostgreSQL как базу данных. Но я как бы застрял в самом простом запросе вставки, который выдает ошибку. У меня есть три стола: posts , authors и categories . Думаю, я мог бы правильно создать таблицу, но когда я пытаюсь вставить данные, я получаю эту ошибку:
Теперь я не знаю, в чем проблема, и ошибки Postgres не так уж специфичны.
Кто-нибудь может сказать мне, где я могу ошибиться?
Вот асинхронная функция, в которой я делаю запрос на вставку:
Вот как выглядит файл журнала Postgres:
2 ответа
Ваши строковые значения не заключаются в кавычки. Это должно быть .
Вы можете добавить кавычки в свой запрос, но не делайте этого. Ваш запрос в том виде, в котором он написан, небезопасен и уязвим для атаки с использованием SQL-инъекции. Не вставляйте значения в запросы с конкатенацией строк .
Вместо этого используйте параметры.
Postgres сделает за вас расценки. Это безопаснее, надежнее и быстрее.
Обратите внимание, что an3cxZh8ZD3tdtqG4wuwPR не является допустимым UUID. UUID — это 128-битное целое число, которое часто представляется в виде 32-символьной шестнадцатеричной строки.
Обратите внимание, что вы также, вероятно, захотите использовать автоинкремент первичных ключей вместо самостоятельного создания идентификатора. Для первичного ключа UUID загрузите пакет uuid-ossp и используйте его функция UUID по умолчанию.
Источник
На чтение 2 мин Просмотров 720 Опубликовано 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». В результате будет выполнено подключение к локальной серверной базы.
Я новичок в Postgresql и каждый день узнаю что-то новое. Итак, у меня есть этот блог-проект, в котором я хочу использовать PostgreSQL как базу данных. Но я как бы застрял в самом простом запросе вставки, который выдает ошибку. У меня есть три стола: posts
, authors
и categories
. Думаю, я мог бы правильно создать таблицу, но когда я пытаюсь вставить данные, я получаю эту ошибку:
error: syntax error at or near
length: 95,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '122',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'scan.l',
line: '1180',
routine: 'scanner_yyerror'
Теперь я не знаю, в чем проблема, и ошибки Postgres не так уж специфичны.
Кто-нибудь может сказать мне, где я могу ошибиться?
Вот таблицы:
const createInitialTables = `
CREATE TABLE authors (
id UUID NOT NULL,
author_name VARCHAR(100) NOT NULL UNIQUE CHECK (author_name <> ''),
author_slug VARCHAR(100) NOT NULL UNIQUE CHECK (author_slug <> ''),
PRIMARY KEY (id)
);
CREATE TABLE posts (
id UUID NOT NULL,
post VARCHAR(500) NOT NULL CHECK (post<> ''),
post_slug VARCHAR(500) NOT NULL CHECK (post_slug <> ''),
author_id UUID NOT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_authors FOREIGN KEY(author_id) REFERENCES authors(id)
);
CREATE TABLE categories (
id UUID NOT NULL,
category_name VARCHAR(50) NOT NULL CHECK (category_name <> ''),
category_slug VARCHAR(50) NOT NULL CHECK (category_slug <> ''),
post_id UUID NOT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_posts FOREIGN KEY(post_id) REFERENCES posts(id)
);
`;
Вот асинхронная функция, в которой я делаю запрос на вставку:
const insertAuthor = async() => {
try {
const data = await fs.readFile( path.join( __dirname + '../../data/data.json' ) );
const parsedData = JSON.parse( data.toString() );
const authorID = short.generate();
const authorName = parsedData[ 0 ].author;
const authorSlug = slugify( parsedData[ 0 ].author, {
strict: true,
lower: true
} );
const insertData = `
INSERT INTO authors (id, author_name, author_slug)
VALUES
(${authorID}, ${authorName}, ${authorSlug});
`;
await pool.query( insertData );
console.log( 'Data inserted successfully!' );
} catch ( e ) {
console.log( e );
}
};
insertAuthor();
ОБНОВИТЬ—————————————
Вот как выглядит файл журнала Postgres:
2021-10-18 01:23:16.885 +06 [5964] ERROR: syntax error at or near "Paton" at character 122
2021-10-18 01:23:16.885 +06 [5964] STATEMENT:
INSERT INTO authors (id, author_name, author_slug)
VALUES
(an3cxZh8ZD3tdtqG4wuwPR, Alan Paton, alan-paton);
2 ответа
Лучший ответ
INSERT INTO authors (id, author_name, author_slug)
VALUES
(an3cxZh8ZD3tdtqG4wuwPR, Alan Paton, alan-paton);
Ваши строковые значения не заключаются в кавычки. Это должно быть …
INSERT INTO authors (id, author_name, author_slug)
VALUES
('an3cxZh8ZD3tdtqG4wuwPR', 'Alan Paton', 'alan-paton');
Вы можете добавить кавычки в свой запрос, но не делайте этого. Ваш запрос в том виде, в котором он написан, небезопасен и уязвим для атаки с использованием SQL-инъекции. Не вставляйте значения в запросы с конкатенацией строк .
Вместо этого используйте параметры.
const insertSQL = `
INSERT INTO authors (id, author_name, author_slug)
VALUES ($1, $2, $3);
`;
await pool.query( insertSQL, [authorID, authorName, authorSlug] );
Postgres сделает за вас расценки. Это безопаснее, надежнее и быстрее.
Обратите внимание, что an3cxZh8ZD3tdtqG4wuwPR
не является допустимым UUID. UUID — это 128-битное целое число, которое часто представляется в виде 32-символьной шестнадцатеричной строки.
Обратите внимание, что вы также, вероятно, захотите использовать автоинкремент первичных ключей вместо самостоятельного создания идентификатора. Для первичного ключа UUID загрузите пакет uuid-ossp и используйте его функция UUID по умолчанию.
create extension "uuid-ossp";
create table authors (
id uuid primary key default uuid_generate_v4(),
-- There's no point in arbitrarily limiting the size of your text fields.
-- They will only use as much space as they need.
author_name text not null unique check (author_name <> ''),
author_slug text not null unique check (author_slug <> '')
);
insert into authors (author_name, author_slug)
values ('Alan Paton', 'alan-paton');
3
Schwern
17 Окт 2021 в 23:08
В запросе INSERT добавьте строковые значения в кавычки —
const insertData = `
INSERT INTO authors (id, author_name, author_slug)
VALUES
('${authorID}', '${authorName}', '${authorSlug}');`; // added the quotes
0
Vedant
17 Окт 2021 в 22:43