Дата: 25.11.2013
Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru
Статья ориентирована на новичков. В ней объясняется, что означает ошибка сервера MySQL №1064, рассматриваются типичные ситуации и причины возникновения этой ошибки, а также даются рекомендации по исправлению.
Рассмотрим простейший пример.
SELECT mid, time, title, artist, download, view_count, rating, vote_num FROM dle_mservice WHERE category = ‘1’ AND approve = ‘1’ ORDER BY time DESC LIMIT -10,10;
ERROR 1064 (42000): 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 ‘-10,10’ at line 1
Сервер MySQL сообщает, что в первой строке нашего SQL запроса имеется синтаксическая ошибка, и в одинарных кавычках цитирует часть запроса с того места где начинается ошибка. Это очень полезное свойство, так как позволяет сразу определить место, которое сервер счел ошибочным. В данном случае это ‘-10,10’, ошибка возникает из-за того, что параметр LIMIT не может быть отрицательным числом.
Однако, бывает и так, что цитируемый кусок запроса не содержит синтаксической ошибки. Это означает, что данная часть запроса находится не на своем месте из-за чего весь запрос становится синтаксически неверным. Например, отсутствует разделитель между двумя запросами, пропущен кусок запроса, невидимый символ в дампе и т.д. Неудобством таких ситуаций является то, что сообщение об ошибке не содержит исходный запрос.
Действия по исправлению зависят от контекста возникновения ошибки. Таковых всего 3:
1. Запрос в редакторе.
Самый простейший случай — вы пишите свой запрос в редакторе. Если причина не опечатка, то:
- Смотреть в документации синтаксис команды для вашей версии сервера MySQL.
Обратите внимание: речь идет о версии сервера MySQL, а не клиента (phpmyadmin, workbench и т.д.). Версию сервера можно узнать выполнив команду select version();
- В MySQL допускается использование ключевых слов в качестве имен столбцов/таблиц, но при этом их необходимо заключать в обратные кавычки (там где буква ё на клавиатуре).
Пример:select order from test;
ERROR 1064 (42000): 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 ‘order from test’ at line 1
MariaDB [test]> select `order` from test;
+——-+
| order |
+——-+
| NULL |
+——-+ - По умолчанию ; разделяет команды. Если же нужно выполнить набор из нескольких инструкций как одну команду (например, при создании процедур, фунуций, триггеров), то в зависимости от используемого клиента может потребоваться переопределить разделитель с помощью DELIMITER, иначе интерпретация команды остановится на первой ; и будет ошибка синтаксиса. Пример:
delimiter //
create procedure test()
begin
set @a=1;
select @a;
end//Обратите внимание: DELIMITER это команда консольного клиента mysql, необходимость его использования зависит от того как вы передаете команду серверу. Например,:
- mysql_query() выполняет содержимое как одну команду, добавление delimiter приведет к error 1064 с цитатой, начинающейся со слова delimiter
- phpmyadmin удаляет слово delimiter из-за чего возникает error 1064 с цитатой, начинающейся с переопределенного разделителя
- в MysqlQueryBrowser напротив необходимо использовать delimiter.
2. Перенос базы на другой сервер.
У вас есть дамп (т.е. файл с расширением .sql) и при попытке его импортировать вы получаете ошибку 1064. Причины:
-
В различных версиях набор ключевых слов и синтаксис может немного отличаться. Наиболее распространенный случай: команда create table, в которой ключевое слово type было заменено на engine. Например, если вы получаете ошибку:
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 ‘TYPE=MyISAM CHARACTER SET `utf8`’ at line 29
Это означает, что вы переносите базу в пятую версию сервера MySQL, в котором ключевое слово TYPE не поддерживается и его нужно заменить на ENGINE.
Редко бываю случаи, когда перенос идет на старый (~3.23) сервер, который кодировки не поддерживает. Тогда ошибка будет иметь вид:
#1064 — You have an error in your SQL syntax near ‘DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci’ at line 1
Такое может произойти, если вы переносите базу с хостинга на локальный комп, где стоит древняя версия MySQL. Лучшим решением в данном случае будет не править дамп, а обновить MySQL.
-
Часто проблемы вызваны тем, что дамп делается неродными средствами MySQL (например, phpmyadmin) из-за чего в нем могут быть BOM-маркер, собственный синтаксис комментариев, завершения команды и т.д. Кроме того при использовании того же phpmyadmin возможна ситуация при которой из-за ограничения апача на размер передаваемого файла команда будет обрезана, что приведет к ошибке 1064.
Например, если вы получаете ошибку:#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 ‘
CREATE TABLE `jos_banner` (
`bid` int(11) NOT NULL auto_increment,
`ci‘ at line 1Значит ваш дамп содержит 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.
Кусок кода, который отвечает за данный запрос это
$db->query («SELECT id, title, date, category, alt_name, flag FROM « . PREFIX . «_post WHERE MATCH (title, short_story, full_story, xfields, title) AGAINST (‘$body’) AND id != «.$row[‘id’].» AND approve=’1′».$where_date.» LIMIT «.$config[‘related_number’]);
Далее можно искать откуда взялась переменная $row и почему в ней нет элемента ‘id’ и вносить исправления, но лучше отказаться от использования такого модуля (неизвестно сколько сюрпризов он еще принесет).
P.S. Если после прочтения статьи ваш вопрос с MySQL Error 1064 остался нерешенным, то задавайте его на форуме SQLinfo
Дата публикации: 25.11.2013
© Все права на данную статью принадлежат порталу SQLInfo.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в бумажных изданиях допускается только с разрешения редакции.
при выдаче команды MySQL я получаю ошибку #1064 «синтаксическая ошибка».
Как я могу это исправить?
6 ответов
TL; DR
-
прочитайте сообщение об ошибке. он говорит вам именно там, где в вашей команде MySQL запутался.
-
проверьте в руководстве пользователя. по сравнению с тем, что MySQL ожидается, что в этот момент, проблема часто очевидное.
-
Проверьте зарезервированные слова. если ошибка произошла с идентификатором объекта, проверьте, что это не зарезервированное слово (и, если это так, убедитесь, что оно правильно указано).
проверил!! Что делает #1064 mean?
ошибка посмотреть как gobbledygook, но они (часто) невероятно информативны и предоставляют достаточные детали, чтобы точно определить, что пошло не так. Понимая точно, что MySQL говорит вам, вы можете вооружиться, чтобы исправить любую проблему такого рода в будущем.
как и во многих программах, ошибки MySQL кодируются в соответствии с тип проблемы, которая произошла. ошибка #1064 ошибка синтаксиса.
что это «синтаксис», о котором вы говорите? Это колдовство?
в то время как «синтаксис» — это слово, которое многие программисты сталкиваются в контексте компьютеры, по сути, заимствованы из более широкой лингвистики. Это относится к структуре предложения, т. е. правила грамматики; или, другими словами, правила, определяющие, что составляет действующий приговор в рамках языка.
например, следующее английское предложение содержит синтаксическую ошибку (поскольку неопределенная статья » a » всегда должна предшествовать существительному):
это предложение содержит синтаксическую ошибку a.
какое это имеет отношение к MySQL?
всякий раз, когда кто-то выдает команду компьютеру, одна из самых первых вещей, которые он должен сделать, это «разобрать» эту команду, чтобы понять ее. «Синтаксическая ошибка» означает, что синтаксический анализатор не может понять, что спрашивается, потому что он не представляет собой допустимую команду в языке: другими словами, команда нарушает грамматику программирования язык.
важно отметить, что компьютер должен понять команду, прежде чем он сможет что-либо с ней сделать. Поскольку есть синтаксическая ошибка, MySQL понятия не имеет, что нужно, и поэтому отказывается прежде чем он даже выглядит по базе данных и поэтому схема или содержимое таблицы не имеют значения.
как это исправить?
очевидно, нужно определить, как это происходит, что команда нарушает грамматику MySQL. Это может показаться довольно непроницаемым, но MySQL очень старается помочь нам здесь. Все, что нам нужно сделать, это. —27—>
читать сообщения!
MySQL не только говорит нам ровно где синтаксический анализатор обнаружил ошибку синтаксиса, но также делает предложение для ее исправление. Например, рассмотрим следующую команду SQL:
эта команда выдает следующую ошибку сообщение:
ERROR 1064 (42000): 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 ‘WHERE SET name=’foo» at line 1
MySQL говорит нам, что все казалось прекрасным до слова WHERE , но затем возникла проблема. Другими словами, он не ожидал встретить WHERE в этой точке.
сообщения, которые говорят . near » at line. просто означает, что конец команды был обнаружен неожиданно: то есть что-то еще должно появиться до завершения команды.
подчиняться приказы!
MySQL также рекомендует, чтобы мы»проверьте руководство, которое соответствует нашей версии MySQL для правильного синтаксиса, чтобы использовать«. Давайте сделаем это.
я используете MySQL версии 5.6, так что я буду говорить эта версия ручной ввод для UPDATE команда. Самое первое на странице-это грамматика команды (это верно для каждой команды):
в руководстве объясняется, как интерпретировать этот синтаксис в типографские и синтаксические соглашения, но для наших целей достаточно признать, что: предложения, содержащиеся в квадратных скобках [ и ] являются необязательными; вертикальные полосы | укажите альтернативы; и эллипсы . обозначьте либо опущение для краткости, либо то, что предыдущее предложение может быть повторено.
мы уже знаем, что парсер верил, что все в нашей команде было в порядке до WHERE ключевое слово, или другими словами До и включая ссылку на таблицу. Глядя на грамматику, мы видим, что table_reference должен следовать SET ключевое слово: тогда как в нашей команде за ним фактически следовали WHERE ключевое слово. Это объясняет, почему анализатор сообщает, что в этот момент возникла проблема.
примечание о бронировании
конечно, это был простой пример. Однако, следуя двум шагам, изложенным выше (т. е. наблюдая точно, где в команде парсер обнаружил, что грамматика была нарушена и сравнивается с описанием руководства что ожидалось в тот момент), практически каждая синтаксическая ошибка может быть легко идентифицирована.
я говорю «практически все», потому что есть небольшой класс проблем, которые не так легко обнаружить-и именно там парсер считает, что элемент языка, с которым столкнулся, означает одно, тогда как вы намереваетесь это означать другое. Возьмем следующий пример:
опять же, парсер не ожидает столкнуться WHERE в этот момент и так возникнет аналогичная синтаксическая ошибка-но вы не предназначались для этого where быть ключевым словом SQL: вы намеревались определить столбец для обновления! Однако, как указано в разделе Имена Объектов Схемы:
если идентификатор содержит специальные символы или является зарезервированным словом, вы должны цитировать всякий раз, когда вы обращаетесь к нему. (Исключение: зарезервированное слово, которое следует за точкой в полном имени, должно быть идентификатором, поэтому его не нужно цитировать.) Зарезервированные слова перечислены в раздел 9.3, «ключевые слова и зарезервированные слова».
символ цитаты идентификатора-это backtick (» ` «):
если ANSI_QUOTES включен режим SQL, также допустимо указывать идентификаторы в двойном предложении Маркс:
Если вы получаете ошибку с клиентом SQuirreL при запуске SQL rxpression с точкой с запятой, как процедура CREATE, то вам нужен плагин MySQL. Вы можете выбрать его при установке. По умолчанию он не выбран.
для моего случая я пытался выполнить код процедуры в MySQL, и из-за какой-то проблемы с сервером, на котором сервер не может понять, где закончить оператор, я получал код ошибки 1064. Поэтому я обернул процедуру пользовательским разделителем, и она работала нормально.
например, раньше было:
после установки разделителя это было так:
вы также получаете эту ошибку при попытке вставить JSON или другие данные со специальными символами, без необходимых кавычек, например:
различные причины.. скажем, например, если мы объявляем любую переменную, то она должна быть перед любым другим типом операторов. или нам нужно поставить блок BEGIN перед этим.
дает ошибку, поэтому нам нужно сделать это
это может быть потому, что ваша строка или вставленные данные содержат одиночная кавычка ‘ вы можете попробовать
функция для выхода из строки при вставке данных (insert query) в базу данных.
MySQL error 1064
Статья ориентирована на новичков. В ней объясняется, что означает ошибка сервера MySQL №1064, рассматриваются типичные ситуации и причины возникновения этой ошибки, а также даются рекомендации по исправлению.
Рассмотрим простейший пример.
Сервер MySQL сообщает, что в первой строке нашего SQL запроса имеется синтаксическая ошибка, и в одинарных кавычках цитирует часть запроса с того места где начинается ошибка. Это очень полезное свойство, так как позволяет сразу определить место, которое сервер счел ошибочным. В данном случае это ‘-10,10’, ошибка возникает из-за того, что параметр LIMIT не может быть отрицательным числом.
Однако, бывает и так, что цитируемый кусок запроса не содержит синтаксической ошибки. Это означает, что данная часть запроса находится не на своем месте из-за чего весь запрос становится синтаксически неверным. Например, отсутствует разделитель между двумя запросами, пропущен кусок запроса, невидимый символ в дампе и т.д. Неудобством таких ситуаций является то, что сообщение об ошибке не содержит исходный запрос. Действия по исправлению зависят от контекста возникновения ошибки. Таковых всего 3:
1. Запрос в редакторе.
Самый простейший случай — вы пишите свой запрос в редакторе. Если причина не опечатка, то:
- Смотреть в документации синтаксис команды для вашей версии сервера MySQL.
- mysql_query() выполняет содержимое как одну команду, добавление delimiter приведет к error 1064 с цитатой, начинающейся со слова delimiter
- phpmyadmin удаляет слово delimiter из-за чего возникает error 1064 с цитатой, начинающейся с переопределенного разделителя
- в MysqlQueryBrowser напротив необходимо использовать delimiter.
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 ! php» style=»font-family: monospace;»> $db -> query ( «SELECT id, title, date, category, alt_name, flag FROM » . PREFIX . «_post WHERE MATCH (title, short_story, full_story, xfields, title) AGAINST (‘$body’) AND id != » . $row [ ‘id’ ] . » AND approve=’1’» . $where_date . » LIMIT » . $config [ ‘related_number’ ] ) ;
Далее можно искать откуда взялась переменная $row и почему в ней нет элемента ‘id’ и вносить исправления, но лучше отказаться от использования такого модуля (неизвестно сколько сюрпризов он еще принесет).
How can I fix MySQL error #1064?
When issuing a command to MySQL, I’m getting error #1064 «syntax error».
What does it mean?
How can I fix it?
![]()
3 Answers 3
-
Read the error message. It tells you exactly where in your command MySQL got confused.
-
Examine your command. If you use a programming language to create your command, use echo , console.log() , or its equivalent to show the entire command so you can see it.
-
Check the manual. By comparing against what MySQL expected at that point, the problem is often obvious.
-
Check for reserved words. If the error occurred on an object identifier, check that it isn’t a reserved word (and, if it is, ensure that it’s properly quoted).
Aaaagh!! What does #1064 mean?
Error messages may look like gobbledygook, but they’re (often) incredibly informative and provide sufficient detail to pinpoint what went wrong. By understanding exactly what MySQL is telling you, you can arm yourself to fix any problem of this sort in the future.
As in many programs, MySQL errors are coded according to the type of problem that occurred. Error #1064 is a syntax error.
What is this «syntax» of which you speak? Is it witchcraft?
Whilst «syntax» is a word that many programmers only encounter in the context of computers, it is in fact borrowed from wider linguistics. It refers to sentence structure: i.e. the rules of grammar; or, in other words, the rules that define what constitutes a valid sentence within the language.
For example, the following English sentence contains a syntax error (because the indefinite article «a» must always precede a noun):
This sentence contains syntax error a.
What does that have to do with MySQL?
Whenever one issues a command to a computer, one of the very first things that it must do is «parse» that command in order to make sense of it. A «syntax error» means that the parser is unable to understand what is being asked because it does not constitute a valid command within the language: in other words, the command violates the grammar of the programming language.
It’s important to note that the computer must understand the command before it can do anything with it. Because there is a syntax error, MySQL has no idea what one is after and therefore gives up before it even looks at the database and therefore the schema or table contents are not relevant.
How do I fix it?
Obviously, one needs to determine how it is that the command violates MySQL’s grammar. This may sound pretty impenetrable, but MySQL is trying really hard to help us here. All we need to do is…
Read the message!
MySQL not only tells us exactly where the parser encountered the syntax error, but also makes a suggestion for fixing it. For example, consider the following SQL command:
That command yields the following error message:
ERROR 1064 (42000): 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 ‘WHERE SET name=’foo» at line 1
MySQL is telling us that everything seemed fine up to the word WHERE , but then a problem was encountered. In other words, it wasn’t expecting to encounter WHERE at that point.
Messages that say . near » at line. simply mean that the end of command was encountered unexpectedly: that is, something else should appear before the command ends.
Examine the actual text of your command!
Programmers often create SQL commands using a programming language. For example a php program might have a (wrong) line like this:
If you write this this in two lines
then you can add echo $query; or var_dump($query) to see that the query actually says
Often you’ll see your error immediately and be able to fix it.
Obey orders!
MySQL is also recommending that we «check the manual that corresponds to our MySQL version for the right syntax to use«. Let’s do that.
I’m using MySQL v5.6, so I’ll turn to that version’s manual entry for an UPDATE command. The very first thing on the page is the command’s grammar (this is true for every command):
The manual explains how to interpret this syntax under Typographical and Syntax Conventions, but for our purposes it’s enough to recognise that: clauses contained within square brackets [ and ] are optional; vertical bars | indicate alternatives; and ellipses . denote either an omission for brevity, or that the preceding clause may be repeated.
We already know that the parser believed everything in our command was okay prior to the WHERE keyword, or in other words up to and including the table reference. Looking at the grammar, we see that table_reference must be followed by the SET keyword: whereas in our command it was actually followed by the WHERE keyword. This explains why the parser reports that a problem was encountered at that point.
A note of reservation
Of course, this was a simple example. However, by following the two steps outlined above (i.e. observing exactly where in the command the parser found the grammar to be violated and comparing against the manual’s description of what was expected at that point), virtually every syntax error can be readily identified.
I say «virtually all», because there’s a small class of problems that aren’t quite so easy to spot—and that is where the parser believes that the language element encountered means one thing whereas you intend it to mean another. Take the following example:
Again, the parser does not expect to encounter WHERE at this point and so will raise a similar syntax error—but you hadn’t intended for that where to be an SQL keyword: you had intended for it to identify a column for updating! However, as documented under Schema Object Names:
If an identifier contains special characters or is a reserved word, you must quote it whenever you refer to it. (Exception: A reserved word that follows a period in a qualified name must be an identifier, so it need not be quoted.) Reserved words are listed at Section 9.3, “Keywords and Reserved Words”.
The identifier quote character is the backtick (“ ` ”):
If the ANSI_QUOTES SQL mode is enabled, it is also permissible to quote identifiers within double quotation marks:
I keep getting this error:
MySQL said: #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 ‘INSERT INTO
books.book(isbn10,isbn13,title,edition,author_f_name,author_m_na’
at line 15
with this query:
USE books;
DROP TABLE IF EXISTS book;
CREATE TABLE `books`.`book`(
`book_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`isbn10` VARCHAR(15) NOT NULL,
`isbn13` VARCHAR(15) NOT NULL,
`title` VARCHAR(50) NOT NULL,
`edition` VARCHAR(50) NOT NULL,
`author_f_name` VARCHAR(50) NOT NULL,
`author_m_name` VARCHAR(50) NOT NULL,
`author_l_name` VARCHAR(50) NOT NULL,
`cond` ENUM('as new','very good','good','fair','poor') NOT NULL,
`price` DECIMAL(8,2) NOT NULL,
`genre` VARCHAR(50) NOT NULL,
`quantity` INT NOT NULL)
INSERT INTO books.book(isbn10,isbn13,title,edition,author_f_name,author_m_name,author_l_name,cond,price,genre,quantity)**
VALUES ('0136061699','978-0136061694','Software Engineering: Theory and Practice','4','Shari','Lawrence','Pfleeger','very good','50','Computing','2');
Any idea what the problem is?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Активные темы Темы без ответов
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2013-11-02 15:20:39
- Svetlana
- Редкий гость
- Неактивен
- Зарегистрирован: 2012-11-06
- Сообщений: 11
Тема: Ошибка 1064
Здравствуйте!
При импорте базы на новый хостинг восникает эта ошибка:
#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 » at line 1
При этом таблицы переносятся, но сайт перекошен
Версия базы и у старого хостера и у нового одна 5.1.70
Что делать?
2 Ответ от Hanut 2013-11-02 18:43:36

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,722
Re: Ошибка 1064
По ошибке причина проблемы в запросе не понятна.
Что значит сайт перекошен?
3 Ответ от Svetlana 2013-11-02 22:00:43 (изменено: Svetlana, 2013-11-02 22:08:17)
- Svetlana
- Редкий гость
- Неактивен
- Зарегистрирован: 2012-11-06
- Сообщений: 11
Re: Ошибка 1064
Hanut сказал:
По ошибке причина проблемы в запросе не понятна.
Что значит сайт перекошен?
Это значит,что от шаблона ничего не осталось, а на первой странице в столбик три строчки: контакты, сайт находится в стадии наполнения и еще что-то.. Эти ссылки ведут на ошибку: Not Found
The requested URL /gabarit39.ru/index.php was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. Или вместо index.php там будет контакты, вобщем, не находит документ, на который ведет ссылка…
Версия php у старого хостера 5.2, а у нового 5.3
4 Ответ от Hanut 2013-11-03 13:23:51

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,722
Re: Ошибка 1064
Не находит путь /gabarit39.ru/index.php
Вероятно домен указан, как часть пути, поэтому возникла проблема. Посмотрите настройки скрипта, возможно это можно исправить. Думаю база данных здесь ни при чем.
5 Ответ от Svetlana 2013-11-03 13:45:42
- Svetlana
- Редкий гость
- Неактивен
- Зарегистрирован: 2012-11-06
- Сообщений: 11
Re: Ошибка 1064
Настройки скрипта-это где? Файл configuration.php.?
6 Ответ от Hanut 2013-11-03 14:43:08

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,722
Re: Ошибка 1064
Svetlana сказал:
Настройки скрипта-это где? Файл configuration.php.?
Вероятно это он. Зависит от скрипта.
7 Ответ от Svetlana 2013-11-03 21:38:06
- Svetlana
- Редкий гость
- Неактивен
- Зарегистрирован: 2012-11-06
- Сообщений: 11
Re: Ошибка 1064
Все нормально теперь работает, просто при копировании файлов сайта где-то ошибку допустила…
Спасибо за ответы!
8 Ответ от мана 2013-12-02 09:26:21
- мана
- Новичок
- Неактивен
- Зарегистрирован: 2013-12-02
- Сообщений: 1
Re: Ошибка 1064
При импорте БД:
#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 » at line 1
Hanut, что посоветуете? У Вас такие четкие ответы! Спасибо заранее.
9 Ответ от vasya 2013-12-04 14:44:37
- vasya
- Редкий гость
- Неактивен
- Зарегистрирован: 2013-12-04
- Сообщений: 6
Re: Ошибка 1064
Отчего же вы тогда не читаете такие четкие ответы? Первый ответ в этой теме актуален и для вас
Hanut сказал:
По ошибке причина проблемы в запросе не понятна.
В качестве общего ответа смотрите — MySQL error 1064
А чтобы получить ответ для вашего частного случая нужно больше информации, покажите дамп что-ли.
10 Ответ от Kostyantin 2013-12-05 23:58:08
- Kostyantin
- Редкий гость
- Неактивен
- Зарегистрирован: 2013-12-05
- Сообщений: 2
Re: Ошибка 1064
SQL-запрос:
# phpMyAdmin SQL Dump
# version 2.5.6
# http://www.phpmyadmin.net
#
# ����: localhost # ��
��� �������� : ��� 142007 �.,14 :06# ������ �������: 3.23.53 # ������ PHP: 4.3.6 # # �� : `
phpsite `
#
# ———————————————————
#
# ��������� ������� `articles`
#
CREATE TABLE `articles` (
`id ` int(5) NOT NULL auto_increment,
`title` varchar(255) NOT NULL default »,
` meta_d ` varchar(255) NOT NULL default »,
`meta_k` varchar(255) NOT NULL default »,
`date` date NOT NULL default ‘0000-00-00’,
`desc ription ` text NOT NULL,
`text` text NOT NULL,
`author` varchar(255) NOT NULL DEFAULT »,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT =3;
Ответ MySQL: Документация
#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 ‘TYPE=MyISAM AUTO_INCREMENT=3’ at line 29
помогите
11 Ответ от Hanut 2013-12-06 14:13:01

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,722
Re: Ошибка 1064
Несоответствие версий MySQL. Проще всего прямо в дампе поправить все TYPE=MyISAM на ENGINE=MyISAM.
12 Ответ от alinka55 2018-11-03 20:35:25
- alinka55
- Новичок
- Неактивен
- Зарегистрирован: 2018-10-28
- Сообщений: 1
Re: Ошибка 1064
Может кто знает как исправить эту ошибку?
ERROR: Неизвестная пунктуация @ 15
STR: ><
Ответ MySQL: Документация
#1064 — You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘<!DOCTYPE HTML><html lang=’ru’ dir=’ltr’ class=’chrome chrome68′><head><meta cha’ at line 1
Сообщения 12
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
0 Пользователей и 1 Гость просматривают эту тему.
- 17 Ответов
- 1677 Просмотров

Доброе время суток!
Есть такая ошибка, которая походу возникла после много численных импорт/экспорт данных.
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 ‘) AND prod.product_publish = ‘1’ AND prod.access IN (1,1,5))’ at line 4
Пациент: https://wowzoo.com.ua/shop
Жалоба: «/shop» падает ошибка.
Что посоветуете ? какое лекарство есть ?
Понимаю что в бд где то косяк.. но я его откр.. нашел таблицу, столбик и просмотрел его, но вроде все хорошо.
UPD: проблема была в «JoomShopping — Product To Parent Category» я его откл.
UPD2: От удаления/откл. плагина выше появляется другая пробелма. которую решаеться только плагином «JoomShopping — Product To Parent Category». По этому вопрос с ошибкой 1064 открыт
UPD3(финальный) устанавливать только плагин надо и если указ. товары в 1 родительской категорий несколько категорий то убрать и указать только ту категорию какая реально она нужна.
Плагин качать с https://linfuby.com/joomshopping/addons/parent-category
« Последнее редактирование: 10.07.2017, 09:17:17 от pavel2950 »
Записан
« Последнее редактирование: 06.07.2017, 21:35:26 от pavel2950 »
Записан
Ошибки не увидел, страница грузиться… Зато в консоле 4 ошибки.
С модулем сравнения проблема и с Google.maps
Ошибки не увидел, страница грузиться… Зато в консоле 4 ошибки.
С модулем сравнения проблема и с Google.maps
Google maps выдает везде ошибку где карта не отображаться
Проблему решил: Из-за «JoomShopping — Product To Parent Category» выдавало ошибку.
Проблему решил: Из-за «JoomShopping — Product To Parent Category» выдавало ошибку.
Минуточку… А какая версия аддона?
Записан
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения — дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги — 41001751720054
Минуточку… А какая версия аддона?
последния версия
Выходит я решил проблему из-за того чего подает ошибка 1064. Но без плагина не фильтрует сайт по всем категориям.. а только в той какая активная.
Выходит осталься на том же месте.
последния версия
А последняя это какая? «Последняя» звучит как-то не определенно
Записан
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения — дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги — 41001751720054
«Последняя» звучит как-то не определенно
это во-первых. а во-вторых, с учетом того, что в последнее время появилось много желающих заработать себе лавры руками других, еще и по хорошему надо указывать откуда скачивали. а то вполне может получиться, что автор будет решать проблему, которая к его расширению вообще отношения не имеет 
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
это во-первых. а во-вторых, с учетом того, что в последнее время появилось много желающих заработать себе лавры руками других, еще и по хорошему надо указывать откуда скачивали. а то вполне может получиться, что автор будет решать проблему, которая к его расширению вообще отношения не имеет
https://wowzoo.com.ua/shop
все же снова вернулся к проблеме той.
качал с https://linfuby.com/joomshopping/addons/parent-category
ага, ну уже чуть-чуть проще. тогда наверное если ответить на вопрос автора
А последняя это какая? «Последняя» звучит как-то не определенно
будет совсем просто 
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Выберите правильный ответ
1. Addon Parent To Category 2.3
2. Plugin Parent To Category 3.0
3. Другое
P.S. Ну и конечно не помешало бы увидеть запрос полностью
P.P.S. И куда ссылается меню на этой странице? На «Список категорий / Магазин»?
« Последнее редактирование: 10.07.2017, 08:08:48 от Linfuby »
Записан
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения — дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги — 41001751720054
Выберите правильный ответ
1. Addon Parent To Category 2.3
2. Plugin Parent To Category 3.0
3. ДругоеP.S. Ну и конечно не помешало бы увидеть запрос полностью
P.P.S. И куда ссылается меню на этой странице? На «Список категорий / Магазин»?
установил и адон и плагин. Addon Parent To Category 2.3, Plugin Parent To Category 3.0
Да ссылается именно на него «Список категорий / Магазин»
Я просто установил адон и плагин, включил их.
/shop должен быть список категорий магазина.
Я больше ничего не делал.
pavel2950, на странице расширения написано, что ставить нужно только что-то одно.
ВЕРСИЯ 3.0: АДДОН ПЕРЕРАБОТАН В ПЛАГИН, СЛЕДОВАТЕЛЬНО ЕГО УСТАНОВКУ НЕОБХОДИМО ПРОИЗВОДИТЬ ЧЕРЕЗ Joomla (ВЕРСИЮ 2.3 ПРЕДВАРИТЕЛЬНО УДАЛИТЬ, ЕСЛИ ОНА БЫЛА УСТАНОВЛЕНА).
Удалите аддон, оставьте только плагин.
P.S. Убрал аддон с сайта, оставил доступным только плагин.
« Последнее редактирование: 10.07.2017, 08:33:05 от Linfuby »
Записан
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения — дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги — 41001751720054
pavel2950, на странице расширения написано, что ставить нужно только что-то одно.
Удалите аддон, оставьте только плагин.P.S. Убрал аддон с сайта, оставил доступным только плагин.
Господи.. работает….
Но без адона дубл. товары https://wowzoo.com.ua/shop/dogs… каждый товар в 3 экземплярах
UPD: я понимаю скорей всего из-за чего дубли выводятся, потому у 1 товара назначен несколько категорий 1 родителя.
Типа собака>корм>сухой корм.
« Последнее редактирование: 10.07.2017, 09:14:46 от pavel2950 »
Записан
Обязательно проверю дублирование товаров. Спасибо
Записан
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения — дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги — 41001751720054
Для исключения дублирования, необходимо назначать товару только одну категорию (самого нижнего уровня)
Так же поправлен баг со ссылкой товара. Подробнее
Записан
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения — дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги — 41001751720054