- MySQL error 1064
- 1. Запрос в редакторе.
- 2. Перенос базы на другой сервер.
- 3. Некорректная работа сайта.
- Форум пользователей MySQL
- #1 29.01.2009 18:01:36
- #1064 — You have an error in your SQL syntax — помогите найти ошибку
- Как победить ошибку «You have an error in your SQL syntax» в MySQL?
- 1064: You have an error in your SQL syntax
- Сообщения 18
- 1 Тема от psiisyapk 2010-10-17 00:51:56
- Тема: 1064: You have an error in your SQL syntax
- 2 Ответ от Hanut 2010-10-17 10:51:17
- Re: 1064: You have an error in your SQL syntax
- 3 Ответ от psiisyapk 2010-10-19 23:37:27
- Re: 1064: You have an error in your SQL syntax
- 4 Ответ от psiisyapk 2010-10-22 17:43:42
- Re: 1064: You have an error in your SQL syntax
- 5 Ответ от psiisyapk 2010-10-22 18:01:02
- Re: 1064: You have an error in your SQL syntax
- 6 Ответ от Неопытная 2012-12-05 09:38:39
- Re: 1064: You have an error in your SQL syntax
- 7 Ответ от Hanut 2012-12-05 10:25:49
- Re: 1064: You have an error in your SQL syntax
- 8 Ответ от Неопытная 2012-12-07 00:34:30
- Re: 1064: You have an error in your SQL syntax
- 9 Ответ от Hanut 2012-12-07 08:33:20
- Re: 1064: You have an error in your SQL syntax
- 10 Ответ от Неопытная 2012-12-07 12:47:48
- Re: 1064: 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) сервер, который кодировки не поддерживает. Тогда ошибка будет иметь вид:
Такое может произойти, если вы переносите базу с хостинга на локальный комп, где стоит древняя версия 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, ознакомьтесь с кратким списком рекомендаций по решению проблемы.
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
если взять в кавычки слова 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 на сервере, куда дамп импортируется.