Syntax error at or near select перевод

Ошибка Error syntax error at or near 1 в PostgreSQL: что это такое? Многие пользователи сталкиваются с ошибка Error syntax error at or near 1 в PostgreSQL. Уведомления о сбое в программе обычно достаточно корректны. Скорее всего причина в том, что драйвер редактирует детали. Обычно достаточно посмотреть на журнал Postgres, где присутствуют все сведения. […]

Содержание

  1. Ошибка Error syntax error at or near 1 в PostgreSQL: что это такое?
  2. PostgreSQL – что это?
  3. Как определить версию?
  4. Преимущества базы
  5. Пуск pgAdmin-4 и подсоединение к серверной
  6. Получение ‘error: syntax error at or near . ‘ в запросе вставки Postgresql
  7. 2 ответа
  8. Syntax error at or near select перевод
  9. Первое, что приходит на ум —
  10. > Первое, что приходит на ум
  11. 8 Tips Absolute Beginners Can Use to Fix SQL Queries
  12. 1. Place Open and Close Parentheses First
  13. 2. Don’t Put a Comma at the End of a Column or Table Sequence
  14. 3. Use Partial Query Evaluation to Debug Long SQL Queries
  15. 4. Pay Attention to Column and Table Names
  16. 5. Compare Compatible Data Types Only
  17. 6. Use IS NULL When Comparing NULL Values
  18. 7. Always Include the JOIN Condition
  19. 8. Include Non-Aggregated Columns from the SELECT List in GROUP BY Columns
  20. Try It Yourself!

Ошибка 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 по умолчанию.

Источник

Syntax error at or near select перевод

Запрос — вариации на тему upsert . Если выполнять Update отдельно — все работает нормально. В одном запросе с insert — выдает синтаксическую ошибку. Версия Postgresql — 8.4.

Буду благодарен за ответ.

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Первое, что приходит на ум —

Первое, что приходит на ум — два уровня вложенности — не уверен, что это можно.
Второе, что думается — это с логической точки зрения нонсенс. Вы изменяете таблицу, вставляя записи и одновременно пытаетесь эту же таблицу изменять — по идее СУБД должна вас далеко и сразу послать.
Третье, UPDATE не возвращает ничего, таким образом в IN будет пусто, т.е. непонятно что и зачем вы пытаетесь сделать в UPDATE.
Четвёртое в INSERT отсуствует VALUES.
В общем, чтобы вам помочь, нужно сперва понять, что вы хотите, а вы наворотили что-то выше моего понимания

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

> Первое, что приходит на ум

> Первое, что приходит на ум — два уровня вложенности — не уверен, что это можно.

select * from (select * from (select * from (select 1) as foobar ) as bar ) as foo;

> Второе, что думается — это с логической точки зрения нонсенс.

По идее сперва должен выполнится внутрений запрос, котрый вернет id измененных столбцов, а потом — внешний, который произведет вставку для всех остальных.

> Третье, UPDATE не возвращает ничего .

http://www.postgresql.org/docs/8.4/static/sql-update.html The optional RETURNING clause causes UPDATE to compute and return value(s) based on each row actually updated. Any expression using the table’s columns, and/or columns of other tables mentioned in FROM, can be computed. The new (post-update) values of the table’s columns are used. The syntax of the RETURNING list is identical to that of the output list of SELECT.

Случай, когда ничего не изменено, нужно, действительно, обрабатывать отдельно. Спасибо за наводку. Но это легко лечится банальным Select Null union .

> Четвёртое в INSERT отсуствует VALUES.

Если в insert поступают строки из select — то синтаксис именно такой.
Попробуйте: Insert into tbl(key,val) select 1,2;

Источник

8 Tips Absolute Beginners Can Use to Fix SQL Queries

Code errors are common – and frustrating. And when you’re just learning SQL, it can be very challenging to find and fix your mistakes. In this post, we’ll show you eight ways to solve or eliminate common SQL coding errors.

Today, we’ll talk about some tips the SQL beginner can use to avoid several common errors. These tips work in any database environment. As we go along, we’ll be showing some error messages. The exact wording of your error messages may be a little different, but don’t worry; each database engine has their own variants, but the meaning is the same.

That being said, we won’t be focusing on error messages. Instead, we’ll pinpoint the actual cause of the problem (such as forgetting a parenthesis or a quotation mark). This way, you’ll learn how to bypass the issue in the first place.

Ready? Let’s begin!

1. Place Open and Close Parentheses First

Remembering the closing character is key to eliminating unbalanced parentheses, quotes, double quotes, or square brackets. Best practices suggest typing both characters first (open and close) and then typing whatever goes inside.

The following example shows an error when parentheses are not balanced:

Example 1: Unbalanced parentheses

2. Don’t Put a Comma at the End of a Column or Table Sequence

Commas act as a separator in SQL. There should not be any commas between FROM and the first table name or after the final table name. The same idea applies to column definition: when you create a table, be sure not to type an extra comma after the final column name.

This is a really common error.

Example 2: An extra comma

3. Use Partial Query Evaluation to Debug Long SQL Queries

Many SQL clients like Navicat or pgAdmin allow the partial execution of a query. You can do this by using your mouse to highlight part of the code. Using this divide-and-conquer technique, you can easily isolate and fix errors. Obviously, the marked part must be valid SQL.

The upcoming query has two errors. If we execute the opening line of the query, we can see the first problem. (Hint: the «llastname» column doesn’t exist.)

Example 3: An incorrect column name

However if we execute the complete SQL statement, we get an error related to unbalanced parentheses:

Example 4: Subquery with wrong parentheses

We can also mark a subquery and execute it individually, as in the next example:

Example 5: Incorrect function name

4. Pay Attention to Column and Table Names

Pay very close attention when typing column names or table names. If possible, try to copy and paste the name from a command you know is correct – preferably one that’s already executed properly. Best practices suggest copying and pasting names even if you think it’s more time-consuming than typing.

Having a misspelled column name or referring to a column in a table not in the FROM clause is very common indeed. Always look for typos in the column name, make sure the table in the FROM has this column, and make sure that the table is mentioned in FROM .

Example 6: Incorrect table name

Another good practice is to use a table alias or a table name as a column prefix. This is doubly important when you have two or more tables in the <>FROM clause. The following error can appear if you refer to two identically-named columns in different tables:

Example 7: Ambiguous column names

Example 8: Prefixed column names

To fix these errors, add the table name before the column name. (In the above example, that would be employee.depto_id and department.depto_id instead of just depto_id .)

5. Compare Compatible Data Types Only

When you write comparison conditions in the WHERE clause, make sure both data types are compatible with the comparison operator and with each other. If this is not possible, you may have to cast one of the data types. The general rule is to compare numbers against numbers, character strings against character strings, etc.

Some database systems automatically convert data types where possible; others provide enhanced data type conversions (i.e. a TIMESTAMP value can be automatically converted to a DATE before comparisons). Still other database services don’t offer conversions at all. So it is best to look out for these potential issues yourself.

Anyway, the following SQL code gets a data mismatch error because a CHAR string is being compared with an integer value:

Example 9: Mismatched data types

No operator matches the given name and argument type(s). You might need to add explicit type casts to solve this one.

6. Use IS NULL When Comparing NULL Values

If you only need to verify whether a column has a NULL value, pay special attention to which expressions you use. One common mistake is to use = NULL or <> NULL , but these expressions are not syntactically valid. Use IS NULL and IS NOT NULL clauses instead.

Let’s see the incorrect and correct samples:

Example 10: Incorrect NULL comparison

Example 11: Correct NULL comparison

7. Always Include the JOIN Condition

There is more than one valid way to do a join in SQL. The traditional way is to list all the tables to be joined in the FROM clause and put the join conditions in the WHERE clause to build pairs of records. The other (more declarative) way is to use the JOIN clause and list the join conditions after the ON clause. Both are syntactically equivalent, but you should know how to identify the join condition for both.

Here we have two valid joins:

Example 12: Two equivalent joins

However, the tip is: Don’t forget the join condition! Every time you join two or more tables, you must write a join condition to link both tables. If you don’t specify this, you won’t get an error message; you’ll just get incorrect results. These will be wrong because every record from the first table will be joined with all records of the second table. This type of result set is called a Cartesian product of two tables, and usually is not an expected result.

Example 13: A Cartesian product – usually not the result you want

8. Include Non-Aggregated Columns from the SELECT List in GROUP BY Columns

When using aggregate functions, there are some restrictions on what columns can be included in the SELECT list (i.e. the column names after the SELECT clause). You can only include the columns specified in the GROUP BY clause, plus aggregate functions and constants. If you select only aggregate columns, any other column will generate an error. You can see this in the following example.

Example 14: Extra columns in the SELECT list

Example 15: No extra columns in the SELECT list

Sometimes we need to filter data by using an aggregation function. One of the most common mistakes is to put a condition using the aggregate function in the WHERE clause. This is shown below:

Example 16: Incorrect aggregate function in the WHERE

Remember, if you need to filter using an aggregate function, the correct way is to put the condition using the aggregate in the HAVING clause, as in the following example:

Example 17: The aggregate function is in the HAVING clause

Try It Yourself!

LearnSQL is a great place to get started with SQL. Several courses are geared for beginning learners. You can test the tips in this article on the exercises in this SQL course.

Источник

На чтение 2 мин Просмотров 721 Опубликовано 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

Почему я получаю эту ошибку? Мне нужно выбрать оба эти параметра в отдельности, но Im я кодирует это неправильно здесь?

ERROR: syntax error at or near "DISTINCT"

SELECT DISTINCT(mfin_score), DISTINCT(empirica_score ) from account_details

Вы можете сделать:

select distinct mfin_score, empirica_score
from account_details

Ключевое слово distinct не является функцией. Это ключевое слово, чтобы указать, что вы хотите вставлять только теги distinct в ваш результирующий набор.

DISTINCT является KEYWORD не a FUNCTION, поэтому лучше попробовать

SELECT DISTINCT mfin_score, empirica_score from account_details

Если вам нужны отдельные пары mfin и empirica:

select distinct mfin_score, empirica_score
from account_details

Если вам нужен отдельный mfin и отдельная эмпирика, вам нужно сделать что-то другое:

select distinct 'MFIN' As code, mfin_score
from account_details
union all
select distinct 'EMP' As code, empirica_score
from account_details

вам может потребоваться проверить синтаксис postgresql для Alias, не уверен, что он такой же, как oracle

Правильный синтаксис ключевого слова DISTINCT

SELECT DISTINCT column_name,column_name
FROM table_name;

Итак, вы можете написать

SELECT DISTINCT mfin_score, empirica_score from account_details

вместо

SELECT DISTINCT(mfin_score), DISTINCT(empirica_score ) from account_details

просто используйте это

SELECT DISTINCT mfin_score, empirica_score из account_details

Введите минимум 50 символов

Понравилась статья? Поделить с друзьями:
  • Syntax error at or near references
  • Svn an error occurred during ssl communication
  • Syntax error at or near postgresql что это
  • Svg изображения как изменить размер
  • Syntax error at or near limit postgresql