Sql синтаксические ошибки

In the SQL Server Management Studio, errors can be tracked down easily, using the built in Error List pane. This pane can be activated in the View menu, or by using shortcuts Ctrl+ and Ctrl+E

Selecting the Error List pane in SSMS

The Error List pane displays syntax and semantic errors found in the query editor. To navigate directly to the SQL syntax error in the script editor, double-click the corresponding error displayed in the Error List

SQL Keyword errors

SQL keyword errors occur when one of the words that the SQL query language reserves for its commands and clauses is misspelled. For example, writing “UPDTE” instead of “UPDATE” will produce this type of error

In this example, the keyword “TABLE” is misspelled:

Dialog showing that the heyword “TABLE” is misspelled
Dialog showing not only the word “TBLE” is highlighted, but also the words around it

As shown in the image above, not only the word “TBLE” is highlighted, but also the words around it. The image below shows that this simple mistake causes many highlighted words

In fact, there are total of 49 errors reported just because one keyword is misspelled

Dialog showing the SQL syntax Error list

If the user wants to resolve all these reported errors, without finding the original one, what started as a simple typo, becomes a much bigger problem

It’s also possible that all SQL keywords are spelled correctly, but their arrangement is not in the correct order. For example, the statement “FROM Table_1 SELECT *” will report an SQL syntax error

SQL keywords are spelled correctly, but their arrangement is not in the correct order

Arrangement of commands

The wrong arrangement of keywords will certainly cause an error, but wrongly arranged commands may also be an issue

If the user, for example, is trying to create a new schema into an existing database, but first wants to check if there is already a schema with the same name, he would write the following command

Command to check if there is already a schema with the same name

However, even though each command is properly written, and is able to run separately without errors, in this form it results in an error

Incorrect syntax error

As the error message states, CREATE SCHEMA command has to be the first command that is given. The correct way of running this commands together looks like this

The correct way of running CREATE SCHEMA command

Using quotation marks

Another common error that occurs when writing SQL project is to use double quotation marks instead of single ones. Single quotation marks are used to delimit strings. For example, double quotation marks are used here instead of single ones, which cause an error

Useng double quotation marks instead of single ones

Invalid column name error

Replacing quotation marks with the proper ones, resolves the error

Replacing quotation marks with the proper ones

There are situations where double quotation marks need to be used, for writing some general quotes, for example

Situation where double quotation marks need to be used

As shown in the previous example, this will cause an error. But, this doesn’t mean that double quotes can’t be used, they just have to be inside the single quotes. However, adding single quotes in this example won’t solve the problem, but it will cause another one

Adding single quotes in this example won’t solve the problem

Since there is an apostrophe inside this quote, it is mistakenly used as the end of a string. Everything beyond is considered to be an error

Two SQL syntax errors

To be able to use an apostrophe inside a string, it has to be “escaped”, so that it is not considered as a string delimiter. To “escape” an apostrophe, another apostrophe has to be used next to it, as it is shown below

Dialog showing how to “escape” an apostrophe to resolve a SQL syntax error

Finding SQL syntax errors

Finding SQL syntax errors can be complicated, but there are some tips on how to make it a bit easier. Using the aforementioned Error List helps in a great way. It allows the user to check for errors while still writing the project, and avoid later searching through thousands lines of code

Another way to help, is to properly format the code

Bad SQL formatting example

This can improve code readability, thus making the search for errors easier

Properly formatted T-SQL code

  • Author
  • Recent Posts

Milena Petrovic

Milena is a SQL Server professional with more than 20 years of experience in IT. She has started with computer programming in high school and continued at University.

She has been working with SQL Server since 2005 and has experience with SQL 2000 through SQL 2014.

Her favorite SQL Server topics are SQL Server disaster recovery, auditing, and performance monitoring.

View all posts by Milena «Millie» Petrovic

Milena Petrovic

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Prerequisite – SQL Injection While checking for SQL injection we all discover various error messages. Let us figure out the basic cause behind each error and how it appears in MySQL. Below are various error and their explanation. Error-1: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ” foo ‘ at line X. Explanation – If you entered a single quote and it altered the syntax of the database query, this is the expected error message. For MySQL, SQL injection may be present, but the same error message can appear in other contexts. 
    Error-2: N/A Explanation – You have commented out or removed a variable that normally would be supplied to the database. 
    Error-3: The used SELECT statements have different number of columns. Explanation – You will see this when you are attempting a UNION SELECT attack, and you specified different number of columns to the number in the original SELECT statement. 
    Error-4: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ XXX, YYY from SOME_TABLE’ at line 1 Explanation – You commonly see this error message when your injection point occurs before the FROM keyword (Example, you have injected into the columns to be returned) and you have used the comment character to remove required SQL keywords. Try completing the SQL statement yourself while using your comment character. MySQL should helpfully reveal the column names XXX, YYY when this condition is encountered. 
    Error-5: Table ‘DBNAME.SOMETABLE’ doesn’t exist. Explanation – Either you are trying to access a table or view that does not exist. Test your query against a table you know you have access to. MySQL should helpfully reveal the current database schema DBNAME when this condition is encountered. 
    Error-6: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ ‘ at line 1. Explanation – You were probably altering something in a WHERE clause, and your SQL injection attempt has disrupted the grammar. 
    Error-7: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ ‘ line 1. Explanation – Your SQL injection attempt has worked, but the injection point was inside parentheses. You probably commented out the closing parentheses with injected comment characters (–). 
    Error-8: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near XXXXX. Explanation – A general error message. The error messages listed previously all take precedence, so something else went wrong. It is likely that you can try alternative input and get a more meaningful message. 
     

    Last Updated :
    14 Jul, 2022

    Like Article

    Save Article

    Ошибки SQL являются неотъемлемой частью работы с базами данных. Важно понимать их причины и способы решения, чтобы успешно разрабатывать и поддерживать приложения. В этой статье мы рассмотрим различные виды ошибок SQL, их возможные причины, а также методы решения таких проблем. Мы также предоставим ответы на часто задаваемые вопросы ошибках SQL и предложим полезные советы для профессионалов в области баз данных.

    Основные виды ошибок SQL:

    1. Синтаксические ошибки
    2. Ошибки времени выполнения
    3. Логические ошибки

    Синтаксические ошибки

    a. Неправильное использование ключевых слов (H4 Heading) b. Ошибки в структуре запроса (H4 Heading) c. Проблемы с кавычками и скобками (H4 Heading)

    Ошибки времени выполнения

    a. Ошибки доступа к данным (H4 Heading) b. Ошибки ограничений целостности (H4 Heading) c. Проблемы с производительностью (H4 Heading)

    Логические ошибки

    a. Неправильный выбор операторов (H4 Heading) b. Ошибки в вычислениях (H4 Heading) c. Проблемы с агрегацией данных (H4 Heading)

    Чтобы разобраться подробнее – приходите на бесплатный курс

    1. Определение типа ошибки (H3 Heading)
    2. Анализ причин ошибки (H3 Heading)
    3. Применение соответствующего решения (H3 Heading)

    Определение типа ошибки

    • Используйте сообщения об ошибках
    • Отслеживайте контекст запроса

    Анализ причин ошибки

    • Проверьте синтаксис
    • Проверьте права доступа
    • Убедитесь, что данные корректны

    Применение соответствующего решения

    • Исправьте синтаксические ошибки
    • Решите проблемы с данными
    • Оптимизируйте запросы

    Часто задаваемые вопросы

    1. Как наиболее эффективно найти и исправить ошибки SQL?
    2. Какие инструменты могут помочь в диагностике и исправлении ошибок SQL?
    3. Влияет ли версия базы данных на возникновение ошибок SQL?
    4. Как предотвратить ошибки SQL при разработке приложений?

    Чтобы разобраться подробнее – приходите на бесплатный курс

    Как наиболее эффективно найти и исправить ошибки SQL?

    • Используйте подходящие инструменты и ресурсы для отладки
    • Разбивайте сложные запросы на простые
    • Протестируйте запросы с разными наборами данных

    Какие инструменты могут помочь в диагностике и исправлении ошибок SQL?

    • Редакторы кода с поддержкой SQL, такие как Visual Studio Code или Sublime Text
    • Среды разработки баз данных, такие как SQL Server Management Studio или MySQL Workbench
    • Специализированные инструменты для анализа и оптимизации запросов, такие как SQL Sentry Plan Explorer или EverSQL

    Влияет ли версия базы данных на возникновение ошибок SQL?

    Да, версия базы данных может влиять на возникновение ошибок SQL из-за различий в поддерживаемых функциях, синтаксисе и стандартах. Важно использовать актуальную версию базы данных и знать о возможных ограничениях или различиях между версиями.

    Как предотвратить ошибки SQL при разработке приложений?

    • Используйте хорошие практики проектирования баз данных и написания запросов
    • Тестируйте ваш код на разных этапах разработки
    • Внедряйте контроль версий и процессы код-ревью для обеспечения качества кода
    • Обучайте разработчиков основам SQL и принципам работы с базами данных

    Заключение:

    Ошибки SQL являются неизбежным аспектом работы с базами данных, но с правильными знаниями и инструментами их можно успешно диагностировать и исправлять. Надеемся, что эта статья помогла вам лучше понять различные типы ошибок SQL, их причины и способы решения. Следуйте нашим рекомендациям и советам, чтобы свести к минимуму вероятность возникновения ошибок SQL и обеспечить надежную и эффективную работу ваших приложений с базами данных.

    Автор статьи: Артем Михайлов

    PostgreSQL — это одна из самых популярных систем управления базами данных в мире. 

    В данной статье мы рассмотрим распространенные ошибки, которые могут возникнуть в коде PostgreSQL, и предложим решения для их устранения. Если вы желаете создавать эффективные и безошибочные программы для работы с PostgreSQL, то эта статья будет для вас полезна.

    Синтаксические ошибки

    SQL-запросы должны быть написаны с соблюдением определенного синтаксиса. Неверные конструкции и отсутствие необходимых ключевых слов могут привести к неожиданным ошибкам. Проверять синтаксис можно с помощью онлайн-парсеров, например, на сайте sqlfiddle.com. 

    Некоторые примеры синтаксических ошибок в SQL-запросах в PostgreSQL и методы их решения:

    Ошибка в использовании оператора

    SELECT * FROM table WHERE field = 'value' AND OR field2 = 'value2'

    Здесь используется оператор AND перед оператором OR, что недопустимо. Также неправильно использована конструкция «поле = значение OR поле = значение», необходимо использовать «поле = значение1 OR поле = значение2».

    Правильный вариант выглядит так:

    SELECT * FROM table WHERE field = 'value1' OR field2 = 'value2'

    Использование специальных символов

    SELECT * FROM table WHERE field LIKE '%value%'

    Здесь используется подстановочный символ % внутри строки поиска. Однако, PostgreSQL использует другой символ для обозначения подстановочных знаков, это символ ''. Для использования подстановочного знака % необходимо использовать оператор LIKE с ESCAPE:

    SELECT * FROM table WHERE field LIKE '%value%'

    Ошибка выбора неправильного индекса

    Один из наиболее частых типов ошибок связанных с индексами в PostgreSQL — это ошибка выбора неправильного индекса. Это может произойти, когда индекс является неоптимальным для определенного запроса. Обычно это происходит, когда запрос использует не все столбцы, на которые добавлен индекс, и эти недостающие столбцы не будут использоваться в запросе.

    Иногда индекс может не использоваться, когда запросы имеют слишком низкую селективность. Это может произойти, когда в таблице очень мало строк или когда запрос слишком сложный и слишком много данных должно быть обработано.

    Пример кода:

    CREATE TABLE test (
      id SERIAL PRIMARY KEY,
      name VARCHAR (50) NOT NULL,
      age INTEGER,
      email VARCHAR (100)
    )
    
    CREATE INDEX test_name_idx ON test (name)
    -- Запрос имеет слишком низкую селективность
    EXPLAIN ANALYZE SELECT * FROM test

    Этот запрос не использует индекс, потому что таблица очень маленькая и использование индекса не приведет к улучшению производительности.

    Ошибки работы с NULL-значениями

    NULL — это специальное значение, которое может быть присвоено полю в базе данных, если значение этого поля неизвестно или не применимо. В SQL-запросах NULL используется для сравнения и присвоения значений.

    Например, если попытаться складывать NULL-значения в запросе, то результатом будет NULL. В следующем примере мы попытаемся сложить два поля, одно из которых имеет NULL-значение:

    SELECT field1 + field2 FROM table1

    Если одно из полей содержит NULL, то результатом запроса будет NULL. Чтобы избежать этой ошибки, можно использовать функцию COALESCE(), которая заменяет NULL на определенное значение:

    SELECT COALESCE(field1, 0) + COALESCE(field2, 0) FROM table1

    Это означает, что если поле содержит NULL, то он будет заменен на 0, и операция сложения будет выполнена с этим измененным значением, а не с NULL.

    Другой пример ошибки связан с использованием операторов сравнения. Если попытаться сравнить значение поля с NULL с помощью оператора = или <>, то результатом будет неопределенное значение. Вместо этого для проверки на наличие NULL-значений используется оператор IS NULL или IS NOT NULL:

    SELECT * FROM table1 WHERE field1 IS NULL;

    Ошибки вложенности запросов

    Вложенность — это как раз то, что позволяет SQL запросам возвращать более сложные результаты, например, соединять несколько таблиц в одном запросе или использовать подзапросы.

    Одной из наиболее распространенных ошибок является некорректное использование оператора JOIN. В следующем примере мы попытаемся соединить две таблицы с помощью оператора JOIN:

    SELECT * FROM table1 JOIN table2 ON table1.id = table2.id

    Если обе таблицы содержат множество записей, то запрос может занять длительное время на выполнение из-за большого количества строк. Вместо этого рекомендуется использовать оператор WHERE для фильтрации записей:

    SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

    Еще одна распространенная ошибка связана с некорректной оптимизацией запросов с вложенностью. В этом случае может привести к тому, что запрос будет выполняться очень долго. Чтобы избежать этой ошибки, следует выполнять оптимизацию запросов и использовать индексы.

    Ошибки, которые могут привести к нарушению сохранности транзакций

    Ошибки, которые могут привести к нарушению сохранности транзакций, могут возникнуть из-за ошибок в программном коде или из-за неправильных конфигурационных настроек. Некоторые из них включают:

    • Неверное использование оператора COMMIT: неправильное использование оператора COMMIT может привести к нарушению транзакционной сохранности. Например, если в результате работы нескольких операторов данные не были записаны в базу данных, а оператор COMMIT уже был выполнен.

    • Некорректное обращение к базе данных в рамках транзакции: это может возникнуть, например, когда один процесс изменяет данные в базе данных, тогда как другой процесс пытается извлечь данные из той же таблицы.

    • Неправильное использование блокировок и тайм-аутов: это может привести к тому, что другой процесс не может получить доступ к изменяемым данным в течение определенного времени, что также может привести к нарушению транзакционной сохранности.

    Методы обеспечения сохранности транзакций

    Для обеспечения сохранности транзакций в PostgreSQL могут быть применены следующие методы:

    • Использование оператора ROLLBACK: если транзакция была испорчена, то можно использовать оператор ROLLBACK, чтобы отменить изменения.

    • Использование конфигурационных параметров: настройка параметров конфигурации PostgreSQL может помочь предотвратить нарушения сохранности, например, установка корректных временных интервалов блокировок и тайм-аутов.

    • Оптимизация индексов: оптимизация индексов, используемых в запросах, может повысить быстродействие базы данных, что также поможет предотвратить нарушения сохранности.

    Пример использования оператора ROLLBACK для восстановления целостности данных в базе данных:

    BEGIN
    UPDATE accounts SET balance = balance - 100 WHERE id = 1;
    UPDATE accounts SET balance = balance + 100 WHERE id = 2;
    COMMIT

    Если при выполнении оператора UPDATE возникнет ошибка, то можно использовать оператор ROLLBACK, чтобы отменить изменения в базе данных:

    BEGIN
    UPDATE accounts SET balance = balance - 100 WHERE id = 1;
    UPDATE accounts SET balance = balance + 100 WHERE id = 2;
    ROLLBACK

    Подводя итоги

    PostgreSQL является мощным инструментом для управления базами данных, однако, при использовании этой системы управления неизбежно могут возникать ошибки. Если вы не учитываете некоторые особенности, то ваш код может стать источником проблем с данными и производительностью. Тем не менее, следует помнить, что список ошибок не является исчерпывающим, и каждый проект имеет свои уникальные требования. Поэтому, чтобы минимизировать риски возникновения ошибок, рекомендуется тщательно проектировать свои программы и тестировать их перед выкладыванием в продакшен.


    Приглашаем всех желающих на открытое занятие «МК по проектированию БД для несложного Enterprise-приложения». Что вас ждет на этом уроке:

    • Посмотрим, для чего на самом деле нужны нормальные формы.

    • Обсудим полезные подходы при создании связей.

    • Совместно спроектируем небольшую базу данных.

    Записаться на открытый урок можно на странице онлайн-курса «PostgreSQL для администраторов баз данных и разработчиков».

    • Debugging a SQL query
    • How does SQL debugging work?
    • Debugging SQL syntax
    • Common SQL reference guides
    • Common SQL syntax errors
      • Column or table name is “not found” or “not recognized”
      • SQL function does not exist
    • How to find the failing line in a SQL query
      • Reading your SQL error message
      • Reducing the size of a SQL query
    • How to find out what SQL dialect to use
    • Do you have a different problem?
    • Are you still stuck?

    Reading an error message shouldn’t feel like solving a riddle. This debugging guide explains what you can do about stubborn queries that refuse to run.

    Debugging a SQL query

    If your SQL query contains SQL variables that look like {{ variable }}, go to Troubleshooting SQL variables first.

    1. Go to the line that is failing in your SQL query.
      • I don’t know where my SQL query is failing.
    2. Check the SQL syntax on the line that is failing in your SQL query.
    3. Check your query logic if the query uses joins, subqueries, or CTEs.
    4. If you get an error message that isn’t specific to your SQL query, go to Troubleshooting error messages.

    How does SQL debugging work?

    • SQL error messages are displayed for each line in your query that fails to run. You’ll need to follow the steps above for each line that failed.
    • If you make any changes to a line, run your query to check if the problem is fixed before moving on to the next step. You can add a LIMIT clause at the end of your query to speed up the process.
    • Note that SQL queries are not run from top to bottom, so you won’t be debugging your query lines in the order that they are written. Follow the error messages to help you find the lines that need attention.
    1. Review the spelling on the line that is failing in your SQL query.
    2. Review for missing brackets or commas on the line that is failing in your SQL query.
    3. Remove commented lines (lines that begin with -- or /*).
    4. Review for common syntax errors that are specific to your SQL dialect.

    Explanation

    Your database needs to be able to “read” your query in order to execute it.

    • Correct spelling tells your database exactly what to look for.
    • Punctuation tells your database how (e.g. what order to use) to look for your data.
    • Comments are not meant to be read or executed, but sometimes trailing whitespaces or symbols can unexpectedly interfere with the reading and execution of neighboring lines.

    Common SQL reference guides

    Before you start, open up the SQL reference guide for the SQL dialect that you’re using. We’ve linked to some of the most common ones here:

    • MySQL
    • PostgreSQL
    • Microsoft SQL Server
    • Amazon Redshift
    • Google BigQuery
    • Snowflake
    • I don’t know what SQL dialect to use.

    Common SQL syntax errors

    What does your error message say?

    • My column or table name is “not found” or “not recognized”.
    • My SQL “function does not exist”.

    Column or table name is “not found” or “not recognized”

    If your SQL query contains SQL variables that look like {{ variable }}, go to Troubleshooting SQL variables first.

    Steps

    1. Review the structure section of the reference guide for your SQL dialect.

      • Are you using the correct quotation marks? For example:

        • SELECT 'column_name'
        • SELECT "column_name"
        • SELECT `column_name`
      • Are you using the correct path to columns and tables? For example:

        • FROM table_name
        • FROM schema_name.table_name
        • FROM database_name.schema_name.table_name
      • Is your column name a reserved word? For example:

        In PostgresSQL, ‘users’ is a reserved key word.

        • SELECT users will throw an error.
        • SELECT "users" will run correctly.
      • Tip: Use Metabase to check for column and table name syntax

        1. Create a simple question in the notebook editor using the same columns and tables as your SQL question.
        2. Convert the question to SQL.
        3. Look at how the Metabase-generated SQL query refers to column and table names.
    2. Review the data reference for the column and table names in your query.

      • If the column or table name doesn’t exist in the data reference:

        • Run SELECT * FROM your_table_name LIMIT 10; to look for the column or table name to use in your query.
        • If you’re a Metabase admin, check the Data model page for the original schema.
      • If the column name exists, but you can’t query the column from the SQL editor:

        • Ask your Metabase admin if the column was re-named or removed on the database side.
        • If you’re a Metabase admin, you may need to run a sync to refresh your data.

    Explanation

    You need to make sure that you’re using the correct syntax for the SQL dialect used by your database.

    Your query also needs to use column and table names that match the original names in your database. Metabase uses display names that can be updated by your Metabase admin, so the data reference may not match your database schema. It’s also possible that a column or table was re-named on the database side, but Metabase hasn’t run a sync to grab the updates.

    Further reading

    • How Metabase executes SQL queries
    • How Metabase syncs with your database
    • SQL best practices

    SQL function does not exist

    If your SQL query contains SQL variables that look like {{ variable }}, go to Troubleshooting SQL variables first.

    Steps

    1. Review the data type of the column that you want your function to apply to.

      • You can use the Metabase data reference to review the column’s field type (as a proxy for data type).
      • You can also directly query the information schema in your database if you have permission to access it.
    2. Review the function section of the reference guide for your SQL dialect.

      • Confirm that the function exists for your SQL dialect.
      • Review the data type(s) that are accepted by your function.
    3. If the field type of your column does not match the expected data type of your function:

      • Cast your column to the correct data type in your SQL query.
      • If you’re a Metabase admin, you can also cast data types from the Data model page.

    Explanation

    SQL functions are designed to work on specific data types in your database. For example, the DATE_TRUNC function in PostgresSQL works on columns with date, timestamp, and time typed data in a Postgres database. If you try to use the DATE_TRUNC function on a column with a string data type in your database, it won’t work.

    Note that Metabase field types are not one-to-one with the data types in your database. In this case, the field type gives you enough information about the column data type to troubleshoot the error.

    Further reading

    • How Metabase executes SQL queries
    • Field types documentation
    • SQL best practices

    How to find the failing line in a SQL query

    If your SQL query contains SQL variables that look like {{ variable }}, go to Troubleshooting SQL variables first.

    Once you find the line that is failing in your SQL query, go to steps under Debugging a SQL query.

    Reading your SQL error message

    Does your error message:

    • Tell you the line or character position?
    • Include a table or column name? If the table or column name appears more than once in your query, reduce the size of your query.
    • Mention a SQL clause?

    Reducing the size of a SQL query

    If your query uses:

    • Subqueries (nested queries), run each subquery separately. Start with the inner subqueries and work your way out.
    • CTEs, run each CTE separately. Start with your base CTE and work your way down the query.
    • SQL variables that point to Metabase models, run each model separately. Go to the model by opening the variables panel, or enter the model ID number from the variable in the Metabase search bar.
    • Remember to read the SQL error message as you try to isolate the problem. For more information, go to How does SQL debugging work?.

    Tips for working in the SQL editor

    Highlight lines of your SQL query to:

    • Run the lines with Cmd + Return or Ctrl + Enter.
    • Comment/uncomment the lines with Cmd + / or Ctrl + /.

    How to find out what SQL dialect to use

    The SQL dialect is based on the database that stores the tables you want to query. Once you find out what SQL dialect to use, you can follow the steps under Debugging a SQL query.

    To find out which database you’re querying:

    • If you’re a Metabase admin, go to Admin settings > Databases, and look under the Engine column.
    • Otherwise, ask the person who set up your Metabase.

    Do you have a different problem?

    • My query results are wrong.
      • My query results have duplicated rows.
      • My query results have missing rows.
      • My aggregations (counts, sums, etc.) are wrong.
    • My dates and times are wrong.
    • My data isn’t up to date.
    • I have an error message that isn’t specific to my SQL query or syntax.

    Are you still stuck?

    Search or ask the Metabase community.

    Thanks for your feedback!

    Get articles in your inbox every month

    Понравилась статья? Поделить с друзьями:
  • Sql server ошибка 5171
  • Sql ошибка синтаксиса create table
  • Sql server ошибка 5030
  • Sql ошибка 547
  • Sql server ошибка 5023 при запуске