Mysql update you have an error in your sql syntax

MySQL error 1064

Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru

Статья ориентирована на новичков. В ней объясняется, что означает ошибка сервера MySQL №1064, рассматриваются типичные ситуации и причины возникновения этой ошибки, а также даются рекомендации по исправлению.

Рассмотрим простейший пример.

Сервер MySQL сообщает, что в первой строке нашего SQL запроса имеется синтаксическая ошибка, и в одинарных кавычках цитирует часть запроса с того места где начинается ошибка. Это очень полезное свойство, так как позволяет сразу определить место, которое сервер счел ошибочным. В данном случае это ‘-10,10’, ошибка возникает из-за того, что параметр LIMIT не может быть отрицательным числом.

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

1. Запрос в редакторе.

Самый простейший случай — вы пишите свой запрос в редакторе. Если причина не опечатка, то:

    Смотреть в документации синтаксис команды для вашей версии сервера MySQL.

Обратите внимание: речь идет о версии сервера MySQL, а не клиента (phpmyadmin, workbench и т.д.). Версию сервера можно узнать выполнив команду select version ( ) ;

2. Перенос базы на другой сервер.

У вас есть дамп (т.е. файл с расширением .sql) и при попытке его импортировать вы получаете ошибку 1064. Причины:

В различных версиях набор ключевых слов и синтаксис может немного отличаться. Наиболее распространенный случай: команда create table, в которой ключевое слово type было заменено на engine. Например, если вы получаете ошибку:

Это означает, что вы переносите базу в пятую версию сервера MySQL, в котором ключевое слово TYPE не поддерживается и его нужно заменить на ENGINE.

Редко бываю случаи, когда перенос идет на старый (

3.23) сервер, который кодировки не поддерживает. Тогда ошибка будет иметь вид:

READ  Nokia lumia 820 при прошивке

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

Часто проблемы вызваны тем, что дамп делается неродными средствами MySQL (например, phpmyadmin) из-за чего в нем могут быть BOM-маркер, собственный синтаксис комментариев, завершения команды и т.д. Кроме того при использовании того же phpmyadmin возможна ситуация при которой из-за ограничения апача на размер передаваемого файла команда будет обрезана, что приведет к ошибке 1064. Например, если вы получаете ошибку:

Значит ваш дамп содержит BOM-маркер. Это три байта в начале файла, помогающие программе определить что данный файл сохранен в кодировке UTF-8. Проблема в том, что MySQL пытается интерпретировать их как команду из-за чего возникает ошибка синтаксиса. Нужно открыть дамп в текстовом редакторе (например, Notepad++) и сохранить без BOM.

Для избежания подобных проблем при создании дампа и его импорте лучше пользоваться родными средствами MySQL, см http://sqlinfo.ru/forum/viewtopic.php?id=583

3. Некорректная работа сайта.

Если во время работы сайта появляются ошибки синтаксиса, то, как правило, причина в установке вами сомнительных модулей к вашей cms. Лучшее решение — отказаться от их использования. Еще лучше предварительно проверять их работу на резервной копии.

Пример. Движок dle 7.2, поставили модуль ,вроде бы все Ок, но:

MySQL Error!
————————
The Error returned was:
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 ‘AND approve=’ 1 ‘ AND date 2008 -10 -04 04 : 34 : 25 ‘ LIMIT 5’ at line 1

Error Number:
1064
SELECT id, title, date , category, alt_name, flag FROM dle_post WHERE MATCH ( title, short_story, full_story, xfields, title ) AGAINST ( ‘Приобретение и оплата скрипта ‘ ) AND id != AND approve= ‘1’ AND date ‘2008-10-04 04:34:25’ LIMIT 5

В данном примере мы видим, что причина ошибки в отсутствии значения после «id != «

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

Кусок кода, который отвечает за данный запрос это

Далее можно искать откуда взялась переменная $row и почему в ней нет элемента ‘id’ и вносить исправления, но лучше отказаться от использования такого модуля (неизвестно сколько сюрпризов он еще принесет).

Источник

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Страниц: 1 2 3 4

  • Список
  • » Раздел для начинающих
  • » #1064 — You have an error in your SQL syntax — помогите найти ошибку

#1 29.01.2009 18:01:36

#1064 — You have an error in your SQL syntax — помогите найти ошибку

#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 »ak’=’1′, ‘name’=’2’, ‘rang’=’3’, ‘fights’=’4’, ‘forces’=’5’, ‘wellness’=’6’, ‘l’ at line 1

Эта ошибк возникает, при запросе:

INSERT INTO `er_army` SET ‘ak’=’1’, ‘name’=’2’, ‘rang’=’3’, ‘fights’=’4’, ‘forces’=’5’, ‘wellness’=’6’, ‘levels’=’7’, ‘xp’=’8’, ‘strength’=’9’, ‘country’=’10’, ‘region’=’11’

Сначала из кода вставлял, думал код неверне.. потом уже стал проверять напрямую из phpMyAdmin — тоже самое — таже ошибка.
Изначально был запрос с VALUE и перечислением. сейчас в поисках решения запрос видоизменился на использование SET.
Не могу понять, че ему синтаксис не нравится

ПРИМЕЧАНИЕ МОДЕРАТОРА
Всем новичкам, прежде чем писать свой вопрос об ошибке 1064, ознакомьтесь с кратким списком рекомендаций по решению проблемы.

READ  Nmake fatal error u1077 cl возвращенный код 0x2

1. Неправильные кавычки. Одинарные кавычки обозначают строковую константу. Применение их к именам колонок или таблиц приведет к ошибке синтаксиса (как в примере выше). Имена колонок и таблиц нужно заключать в обратные кавычки (там где бкува ё на клавиатуре).

2. TEXT, DATE, DAY, ORDER и многие другие — ключевые слова. Использование их в качестве имен колонок или таблиц без обратных кавычек приведет к ошибке.
Для верности можно все имена колонок и таблиц заключать в обратные кавычки.

3. Обратите внимание на структуру сообщения об ошибке:
. to use near ‘ здесь кусок запроса с того места где начинается ошибка ‘ at line 1

Это означает, что если кусок цитируемого запроса начинается:
а) со слов SELECT, INSERT, UPDATE, DELETE, скорее всего у вас не закрыт предыдущий запрос ( нет ; после него).
б) со слова TYPE, ваша версия уже не поддерживает это ключевое слово и вместо него нужно писать ENGINE
в) если цитируемый кусок запроса на первый взгляд не содержит ошибок, то нужно смотреть на весь запрос целиком. Вероятно ранее в запросе что-нибудь пропущено из-за чего цитируемый кусок оказывается не на своем месте и воспринимается как ошибка.

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

Если в запросе что-нибудь пропущено, например, две подряд запятые (между которыми должно стоять значение) или конструкция вида (`имя колонки`=, ) значит ваш скрипт написан криво и нужно искать место в скрипте где формируется запрос и почему там пустые переменные.

UPD:
Полный список рекомендаций смотрите в статье 1064 you have an error in your sql syntax Статья написана по итогам многочисленных обсуждений на форуме и регулярно обновляется, поэтому освещает аспекты возникновения mysql error 1064.

Источник

Как победить ошибку «You have an error in your SQL syntax» в MySQL?

Когда выкладываю этот код — возникает вот такая ошибка MySQL:
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 ‘ПОСТЕЛЬНОГО БЕЛЬЯ № 01, description = Материал: бяз’ at line 1

  • Вопрос задан более трёх лет назад
  • 2909 просмотров

$query = «UPDATE products SET `title` = ‘$title’, `description` = ‘$description’, `description1` = ‘$description1’, `keywords` = ‘$keywords’,
`price` = ‘$price’, `cost` = ‘$cost’, `quantity` = ‘$quantity’, `cnc` = ‘$cnc’, `text` = ‘$text’, `category` = ‘$category’ WHERE > $result = mysql_query($query) or die(mysql_error());

Вот так не работает(((

$query = «UPDATE products SET `title` = ‘$title’, `description` = ‘$description’, `description1` = ‘$description1’, `keywords` = ‘$keywords’,
`price` = ‘$price’, `cost` = ‘$cost’, `quantity` = ‘$quantity’, `cnc` = ‘$cnc’, `text` = ‘$text’, `category` = ‘$category’ WHERE > $result = mysql_query($query) or die(mysql_error());

Вот так не работает, кавычки не правильные использую?

Источник

1064: You have an error in your SQL syntax

Форум PHP-MyAdmin.RU → Курилка → 1064: You have an error in your SQL syntax

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 18

1 Тема от psiisyapk 2010-10-17 00:51:56

  • psiisyapk
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2010-06-11
  • Сообщений: 16

Тема: 1064: You have an error in your SQL syntax

помогите с ошибкой, вот код:

полная ошибка — 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 ‘desc,author FROM lessons’ at line 1

READ  New connection error python

если взять в кавычки слова desc и author то все ок, что не так?

2 Ответ от Hanut 2010-10-17 10:51:17

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: 1064: You have an error in your SQL syntax

psiisyapk
DESC является зарезервированным словом и его нельзя использовать без косых кавычек в теле запроса, если оно является именем поля таблицы.

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

3 Ответ от psiisyapk 2010-10-19 23:37:27

  • psiisyapk
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2010-06-11
  • Сообщений: 16

Re: 1064: You have an error in your SQL syntax

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

4 Ответ от psiisyapk 2010-10-22 17:43:42

  • psiisyapk
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2010-06-11
  • Сообщений: 16

Re: 1064: You have an error in your SQL syntax

возник тут ещё вопрос по той же теме))
при изменении в форме значения поля таблицы файл обработчик пишет что изменения внесены, но при этом ещё — Undefined variable на строке 44

я подозреваю что это может быть из-за desc но косые кавычки не помогают

5 Ответ от psiisyapk 2010-10-22 18:01:02

  • psiisyapk
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2010-06-11
  • Сообщений: 16

Re: 1064: You have an error in your SQL syntax

все, сам нашел свою ошибку, заработало)

6 Ответ от Неопытная 2012-12-05 09:38:39

  • Неопытная
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2012-12-05
  • Сообщений: 7

Re: 1064: You have an error in your SQL syntax

Я впервые на этом форуме. Ответ ищу очень давно. Скачиваю дамп и импортирую к себе в пхпмайадмин, но он стал выдавать ошибку: Ошибка

SQL-запрос :

SET time_zone =

7 Ответ от Hanut 2012-12-05 10:25:49

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: 1064: You have an error in your SQL syntax

Попробуйте убрать эту строку из дампа. Открыть дамп можно в редакторе Notepad++.

8 Ответ от Неопытная 2012-12-07 00:34:30

  • Неопытная
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2012-12-05
  • Сообщений: 7

Re: 1064: You have an error in your SQL syntax

Попробуйте убрать эту строку из дампа. Открыть дамп можно в редакторе Notepad++.

Подкинте, пожалуйста ссылку для скачивания этого редактора. И почему-то не всё сообщение я отправила Вам.. Вот полный текст ошибки: SQL-запрос :


SET time_zone = «+00:00»

Ответ MySQL:
#1064 — You have an error in your SQL syntax near ‘time_zone = «+00:00″‘ at line 2

9 Ответ от Hanut 2012-12-07 08:33:20

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: 1064: You have an error in your SQL syntax

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

10 Ответ от Неопытная 2012-12-07 12:47:48

  • Неопытная
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2012-12-05
  • Сообщений: 7

Re: 1064: You have an error in your SQL syntax

Спасибо. Пробовала скачивать новую версию пхп ( вообще переустанавливала джентельментский набор), при этом дамп импортировался но аероглифами. Потом я переустановила на старую версию, в которой и раньше работала (раньше проблем не возникало) : Дамп импортируется ко мне phpMyAdmin 2.5.6

MySQL 3.23.53-max. Информация с сервера: Сервер: Localhost via UNIX socket
Версия сервера: 5.1.56-log
Версия протокола: 10
Пользователь: sexkur@localhost
MySQL-кодировка: UTF-8 Unicode (utf8)
Веб-сервер

cpsrvd 11.34.0.11
Версия MySQL-клиента: 4.1.22
PHP расширение: mysql
phpMyAdmin

Информация о версии: 3.4.11.1

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

Источник

Smartadm.ru