Ошибка sql запрос insert into

Ошибка
SQL запрос:INSERT INTO `wp_commentmeta` (`meta_id`, `comment_id`, `meta_key`, `meta_value`) VALUES
(1, 2, ‘rating’, ‘5’),
(2, 2, ‘verified’, ‘0’),
(3, 1, ‘_wp_trash_meta_status’, ‘1’),
(4, 1, ‘_wp_trash_meta_time’, ‘1464693386’),
(5, 3, ‘rating’, ‘1’),
(6, 3, ‘verified’, ‘0’)
Ответ MySQL: Документация

#1062 — Дублирующаяся запись ‘1’ по ключу ‘PRIMARY’

при загрузке в базу таблицы пробовали в zip тоже самое

Похожие вопросы

Паркуется домен при установке вп

Добрый день, подскажите почему паркуется домен при установке вордпреса на сайт? Мои действия:

1) создание бд, выставление прав к бд

2) установка вп

3) привязка домена

При переходе по ссылке, выдается страница парковки таймвеб

Подключение к базе данных через c#

Никто не сталкивался с проблемами подключения к базе данных msql на хостинге через c#?
Пробую, не получается!
буду очень рад любой вашей помощи!

Создать опрос на платформе timeweb

Подскажите, пожалуйста, можно ли создать опросник с вариантами ответов, чтобы данные были привязаны к нашему ящику на timeweb и сохранялись там же? Как в googleforms или survey monkey. Спасибо!

Ok I have a very simple mysql database but when i try to run this query via mysql-admin i get weird errors

INSERT INTO customreports (study,
type, mode, select, description)
VALUES (‘1’, ‘2’, ‘3’, ‘4’, ‘5’);

Error:

1064 — 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 ‘select, description) VALUES (‘1’, ‘2’, ‘3’, ‘4’, ‘5’)’ at line 1

JNK's user avatar

JNK

63k15 gold badges121 silver badges138 bronze badges

asked May 26, 2009 at 20:10

The Digital Ninja's user avatar

You’re having problems because you’re using SQL reserved words as column names and not escaping them. Try like this:

INSERT INTO `customreports`
(`study`, `type`, `mode`, `select`, `description`)
VALUES
('1', '2', '3', '4', '5');

answered May 26, 2009 at 20:12

chaos's user avatar

2

Yeah, I would rewrite as:

INSERT INTO [customreports] ([study], [type], [mode], [select], [description]) VALUES (‘1’, ‘2’, ‘3’, ‘4’, ‘5’);

answered May 26, 2009 at 20:14

alex's user avatar

alexalex

9435 silver badges7 bronze badges

just a guess, but is reserved word «select» (listed as a column name) causing a problem?

answered May 26, 2009 at 20:13

KM.'s user avatar

KM.KM.

101k34 gold badges178 silver badges212 bronze badges

2

«SELECT» is a reserved word in SQL… use a different word than «select»

answered May 26, 2009 at 20:13

Jason's user avatar

JasonJason

51.4k37 gold badges133 silver badges185 bronze badges

The word ‘select’ is reserved in sql. The interpreter thinks you’re trying to use a SELECT statement inside the INSERT INTO statement. You need to enclose the field names so that the interpreter doesn’t read them as commands.

Update for MySQL:

insert into customreports ('study','type','mode','select','description') values...

answered May 26, 2009 at 20:14

Justin Niessner's user avatar

Justin NiessnerJustin Niessner

241k40 gold badges407 silver badges536 bronze badges

Correct per Chaos… but the critical thing to remember is you should do your best to NOT use RESERVED words as column names in a table… such as SELECT and TYPE…. not positive of the other three, but that’s where your conflict is. Yes, by being explicit with quotes around the fields will tell the SQL you mean the field within, but its also best to know WHY its failing, and not just a work-around resolution… helps prevent similar issues in the future.

answered May 26, 2009 at 20:15

DRapp's user avatar

DRappDRapp

47.5k12 gold badges72 silver badges142 bronze badges

Ditto the above, but I believe you need double quotes around the column names, not single quotes. Perhaps some flavors of SQL will process the single quotes correctly, but I think the standard says double quotes for field names, single quotes for field values.

answered May 26, 2009 at 20:31

Jay's user avatar

JayJay

26.8k10 gold badges60 silver badges112 bronze badges

1

DDim1000

3 / 3 / 0

Регистрация: 17.12.2011

Сообщений: 506

1

03.01.2017, 13:03. Показов 2204. Ответов 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 ‘;., Иванов, Иван, Иванович’ at line 4

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
          mysql_query("INSERT INTO `reg_user`(`login`, `pass`, `surname`, `name`, `patronymic`, `emil`, `phone`, `address`, `datetme`, `ip`) 
                     VALUES (                                          
                          $login,
                          $pass,
                          $surname,
                          $name,
                          $patronymic,
                          $email,
                          $phone,
                          $address,
                          NOW(),
                          $ip)",$link); 
echo mysql_error(),'<br />';



0



Модератор

4206 / 3046 / 581

Регистрация: 21.01.2011

Сообщений: 13,190

03.01.2017, 13:21

2

Цитата
Сообщение от DDim1000
Посмотреть сообщение

‘;., Иванов, Иван, Иванович’

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



0



DDim1000

3 / 3 / 0

Регистрация: 17.12.2011

Сообщений: 506

03.01.2017, 13:46

 [ТС]

3

Цитата
Сообщение от Grossmeister
Посмотреть сообщение

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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
          $pass = sha1($pass);
          $pass = strrev($pass);
          $pass = "7iy".$pass."76;.";
          
          $ip = $_SERVER['REMOTE_ADDR']; 
          
          mysql_query("INSERT INTO `reg_user`(`login`, `pass`, `surname`, `name`, `patronymic`, `emil`, `phone`, `address`, `datetme`) 
                     VALUES (                                          
                          'ivanko322',
                          '65rfgvftg',
                          'Иванов',
                          'Иван',
                          'Иванович',
                          'ivanov@mail.ru',
                          '89211111111',
                          'ул. Иванова И.И. д. кв. 1',
                          NOW()",$link);



0



3 / 3 / 0

Регистрация: 17.12.2011

Сообщений: 506

03.01.2017, 14:06

 [ТС]

4

И так тоже ошибка… Почему?…….:

Миниатюры

INSERT INTO ошибка синтаксиса
 



0



Супер-модератор

8783 / 2536 / 144

Регистрация: 07.03.2007

Сообщений: 11,873

03.01.2017, 14:39

5

DDim1000, почитайте про параметризированные запросы… а еще неплохо бы увидеть текст запроса со значениями… хотя есть некая уверенность, что не хватает кавычек для строк и дат…

Подготавливаемые запросы



0



3 / 3 / 0

Регистрация: 17.12.2011

Сообщений: 506

03.01.2017, 15:20

 [ТС]

6

Цитата
Сообщение от Lord_Voodoo
Посмотреть сообщение

а еще неплохо бы увидеть текст запроса со значениями… хотя есть некая уверенность, что не хватает кавычек для строк и дат…

Что за текст запроса? Где его брать?……



0



Lord_Voodoo

Супер-модератор

8783 / 2536 / 144

Регистрация: 07.03.2007

Сообщений: 11,873

03.01.2017, 17:21

7

DDim1000,

PHP
1
2
3
4
5
6
7
8
9
10
11
 mysql_query("INSERT INTO `reg_user`(`login`, `pass`, `surname`, `name`, `patronymic`, `emil`, `phone`, `address`, `datetme`) 
                     VALUES (                                          
                          'ivanko322',
                          '65rfgvftg',
                          'Иванов',
                          'Иван',
                          'Иванович',
                          'ivanov@mail.ru',
                          '89211111111',
                          'ул. Иванова И.И. д. кв. 1',
                          NOW()",$link);

вот этот запрос приводит к упомянутой выше ошибке?



0



DDim1000

3 / 3 / 0

Регистрация: 17.12.2011

Сообщений: 506

03.01.2017, 17:42

 [ТС]

8

Может кому то пригодиться…
Вот так работает:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
  mysql_query("INSERT INTO reg_user(login,pass,surname,name,patronymic,emil,phone,address,datetme,ip) 
                     VALUES (                                          
                         '$login',
             '$pass',
             '$surname', 
                         '$name', 
                         '$patronymic', 
                         '$email', 
                         '$phone', 
                         '$address', 
                         'NOW()', 
                         '$ip') ",$link);



1



Супер-модератор

8783 / 2536 / 144

Регистрация: 07.03.2007

Сообщений: 11,873

03.01.2017, 17:54

9

DDim1000, вы бы все-таки почитали за параметризированные запросы… ну и про особенности формирования запросов в зависимости от различных типов данных…



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

03.01.2017, 17:54

Помогаю со студенческими работами здесь

Ошибка синтаксиса
Выдает ошибку:

Вот сам код:
DELIMITER $$
CREATE FUNCTION `ProfitByBuyer`(`BuyerID` INT)…

Ошибка синтаксиса
Выдается ошибка синтаксиса. Скорее всего, тут она не одна. Помогите пожалуйста ;)

create table…

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

SELECT ‘For the city ‘, city, ‘, the highest rating is ‘, &quot;,
MAX (rating) FROM…

Ошибка синтаксиса в триггере
Создаю триггер before insert

UPDATE `journal` SET (`time_end` = NEW.`time_end`)
WHERE…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9

SQL оператор INSERT используется для вставки записей в существующую таблицу.

Синтаксис этого оператора следующий:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
      [INTO] tbl_name [(col_name,...)]
        VALUES (expression,...),(...),...

или 

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name [(col_name,...)]
        SELECT ...

или 

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name
        SET col_name=expression, col_name=expression, ...

Создадим тестовую таблицу

Давайте создадим таблицу table1 со столбцами a, b, c в нашей MySQL базе данных:

CREATE TABLE `table1` (
      `a` INT(11),
      `b` INT(11),
      `c` INT(11)
);

Запрос на вставку строки

Простой запрос, который вставляет строку со столбцами 111, 222 и 333 выглядит так:

INSERT INTO table1 (a, b, c) VALUES (111, 222, 333);

Еще один способ сделать то же самое:

INSERT INTO table1 SET a=111, b=222, c=333;

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

У таблиц обычно есть поле id с первичным ключом (PRIMARY KEY) таблицы. Если этому полю установлено значение AUTOINCREMENT т.е. оно заполняется автоматически, то в таком случае вы не должны его перечислять в списке столбцов оператора INSERT.

Вставка без перечисления столбцов

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

INSERT INTO table1 VALUES (111, 222, 333);

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

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

INSERT INTO table1 (a, b, c) VALUES 
    (1, 222, 333), 
    (2, 555, 666),
    (3, 555, 333);

Таким образом мы вставили 3 строки в нашу таблицу table1. Их может быть и больше. В MySQL четкого предела нет, однако он все таки существует и зависит от параметра max_allowed_packet который ограничивает размер запроса. Если вы установите SET GLOBAL max_allowed_packet=524288000; то размер запроса будет ограничен 500MB но делайте это в очень крайнем случае. Обычно всегда можно найти решение и разделить 1 большой запрос, на несколько более мелких и вставлять например не больше 1000 строк за один цикл.

Как вставить значение из другой таблицы INSERT INTO … SELECT …

Допустим у нас есть еще одна таблица table2 которая по структуре точно такая же как и первая. Нам в таблицу table2 нужно вставить все строки из table1.

Вставляем значения из table1 в таблицу table2:

INSERT INTO table2 (a, b, c) SELECT a, b, c FROM table1;

Вам следует позаботиться об уникальности ключей, если они есть в таблице, в которую мы вставляем. Например при дублировании PRIMARY KEY мы получим следующее сообщение об ошибке:

/* ERROR 1062 (23000): Duplicate entry '100' for key 'PRIMARY' */

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

Как не рекомендуется делать (без перечисления столбцов):

INSERT INTO table2 SELECT * FROM table1;

Если у вас со временем изменится количество столбцов в таблице, то запрос перестанет работать. При выполнении запроса MySQL в лучшем случае просто будет возвращать ошибку:

/* Ошибка SQL (1136): Column count doesn't match value count at row 1 */

Либо еще хуже: значения вставятся не в те столбцы.

Вставка из другой таблицы с условием INSERT INTO … SELECT … WHERE …

А теперь представим, что нам нужно вставить только те строки из table1, у которых столбец «c» равен 333. Тогда наш запрос будет выглядеть так

INSERT INTO table2 (a, b, c)
    SELECT a, b, c FROM table1 
    WHERE c = 333;

То есть мы просто вставляем данные в таблицу, которые выбрали из другой таблицы при помощи обычного SELECT запроса

Теперь представим, что у нас в таблице table2 — 4 столбца, а в table1 — 3. При этом четвертый столбец в table2 обязательный. Чтобы выйти из этой ситуации, нужно передать какое-нибудь подходящее значение в этот лишний столбец. У нас чисто абстрактная задача, поэтому давайте передадим туда просто единицу.

INSERT INTO table2 (a, b, c, d)
    SELECT a, b, c, 1 FROM table1 
    WHERE c = 333;

Теперь в столбец d у нас записалась единица и проблема решена.

Вставка в определенный раздел INSERT INTO … PARTITION …

Подробнее о разделах: https://dev.mysql.com/doc/refman/5.7/en/partitioning-overview.html

Если вам нужно вставить строки в определенный раздел таблицы, то нужно после таблицы указать PARTITION (название раздела), например так:

INSERT INTO table1 PARTITION (p1) VALUES(1, 2, 3);

Вставка в несколько разделов. Первая строка вставляется в раздел p1, а вторая в p2

INSERT INTO table1 PARTITION (p1, p2) VALUES(1, 2, 3), (4, 5, 6);

Больше примеров для работы с разделами: https://dev.mysql.com/doc/refman/5.6/en/partitioning-selection.html

Вставка строк, некоторые из которых уже существуют в целевой таблице

Существование строк определяется по значению уникальных ключей. В зависимости от ситуации мы можем выбрать разные способы поведения при совпадении значений уникальных столбцов.

Игнорирование INSERT IGNORE INTO

Например если мы вставляем строку с PK = 1, и при этом в таблице уже есть PK = 1 то MySQL выдаст ошибку:

/* ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY' */

Выполнение запроса на этом прервется, однако нам в некоторых случаях хотелось бы просто вставить данные, игнорируя ошибки. В этом нам поможет INSERT IGNORE INTO:

INSERT IGNORE INTO table1 (a, b, c) VALUES 
    (1, 222, 333), 
    (2, 555, 666),
    (3, 555, 333);

Просто добавляем IGNORE в наш запрос и ошибки будут игнорироваться

Вставка с заменой существующих значений REPLACE INTO

REPLACE работает также INSERT, но если совпадают уникальные ключи, то старая строка (или строки!) удаляется до вставки новой.

В таком случае наш пример выглядит следующим образом:

REPLACE INTO table1 (a, b, c) VALUES 
    (1, 222, 333), 
    (2, 555, 666),
    (3, 555, 333);

Обновление некоторых полей, при существовании строк ON DUPLICATE KEY UPDATE

При совпадении ключей, мы можем также заменить некоторые или все поля в строке.

Наш запрос будет выглядеть так:

INSERT INTO table1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=VALUES(c);

В данном примере если у нас какой-то уникальный ключ совпадает, то мы не производим вставку, а обновляем существующую строку или строки путем присваивания столбцу «c» значения, которое у нас перечислено в VALUES.

Иными словами, если ключ совпадает, то мы просто обновим данные столбца «с» а остальные столбцы трогать не будем.

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

INSERT INTO table1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c);

При обновлении столбцов мы также можем использовать разные выражения, например:

INSERT INTO table1 (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

Подробнее про ON DUPLICATE KEY UPDATE

Выражения для вставляемых значений в VALUES

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

Пример использования выражений:

INSERT INTO table1 (a, b, c) VALUES 
    (1, 222, 333 + a), 
    (2, 555, 666 + b);

Таким образом мы для формирования столбца «c» использовали столбцы «a» и «b».

Приоритет вставки INSERT LOW_PRIORITY / HIGH_PRIORITY

Установление приоритета нужно для решение проблем с конкурентными вставками. При вставках происходит блокировка строк и если 2 INSERT запроса требуют блокировки одних и тех же строк, для своего выполнения, то иногда может потребоваться повысить или понизить приоритет некоторых запросов, по отношению к другим. Это можно сделать указав приоритет LOW_PRIORITY или HIGH_PRIORITY

Наш запрос будет выглядеть так для LOW_PRIORITY:

INSERT LOW_PRIORITY INTO table1 (a, b, c) VALUES(1, 2, 3);

HIGH_PRIORITY:

INSERT HIGH_PRIORITY INTO table1 (a, b, c) VALUES(1, 2, 3);

Нашли опечатку или ошибку? Выделите её и нажмите Ctrl+Enter

Помогла ли Вам эта статья?

#1 04.02.2010 14:43:43

tjslash
Участник
Зарегистрирован: 04.02.2010
Сообщений: 2

Ошибка INSERT INTO

Запрос вида:

INSERT INTO ‘products’  (cat, brends, divisions, article, name, quant, balls, price) VALUES (‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’)
 

Выдает ошибку:
#1064 — 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 »products’  (cat, brends, divisions, article, name, quant, balls, price) VALUES ‘ at line 1

Подскажите, поджалуйста, что я делаю не так?

Неактивен

#2 04.02.2010 14:45:10

tjslash
Участник
Зарегистрирован: 04.02.2010
Сообщений: 2

Re: Ошибка INSERT INTO

Спасибо, проблему решил)

INSERT INTO products  (cat, brends, divisions, article, name, quant, balls, price) VALUES (‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’)

Неактивен

#3 04.02.2010 14:59:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5817

Re: Ошибка INSERT INTO

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

INSERT INTO `products`  (cat, brends, divisions, article, name, quant, balls, price) VALUES (‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’)

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

Неактивен

Понравилась статья? Поделить с друзьями:
  • Ошибка sql переполнение поля 1с зуп
  • Ошибка spn 3241 камаз евро 5
  • Ошибка sql база найдена таблицы
  • Ошибка sql несовместимые типы в выражении
  • Ошибка spn 3226 fmi 15 камаз как убрать