Ошибка 1064 mysql как исправить
Перейти к содержимому

Ошибка 1064 mysql как исправить

  • автор:

ERROR 1064 в MySQL Workbench при создании таблицы

Цель была: продолжить работу над проектом на языке Java, в котором используется база данных.
Ход действий:
1. Установка MySQL Community Server и IntellJ IDEA.
2. Создание в MySQL Workbench тестовой схемы и создание там тестовой таблицы. Все прошло успешно.
3. Настройка IDE с БД.
4. Импорт дампа БД в MySQL Workbench.
5. Импорт проекта на Java в IDE.
6. Компиляция проекта и запуск, проверка работы приложения с БД. Прошло успешно.
7. Попытка создать новую таблицу рядом с уже существующими, получение ошибки:

Operation failed: There was an error while applying the SQL script to the database.
Executing:
CREATE TABLE test . new_table ( ); 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 ‘)’ at line 2
SQL Statement:
CREATE TABLE test . new_table ( )

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

Отслеживать
задан 18 янв 2017 в 15:35
55 1 1 серебряный знак 9 9 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

По факту всё написано в ответе 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 ‘)’ at line 2

Для наглядности я решил протестировать Ваш запрос и воспроизвести ошибку. и да. она абсолютно аналогична Вашей.

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

Вопрос: Что же может там быть?

Идём в документацию и смотрим синтаксис запроса CREATE:

CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), . ); 

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

Попробуем добавить поле:

CREATE TABLE `test`.`new_table` ( `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ); 

И всё отлично работает!

Вам нужно добавить описание полей в запрос.

Ваш запрос неверный.

По поводу создания схемы могу сказать только одно:

Дайте Ваш запрос и сообщение об ошибке!

Я подозреваю, что ответ находится именно в них!

Учитесь читать сообщения об ошибках! Как правило они отражают суть проблемы.

MySQL error 1064

Статья ориентирована на новичков. В ней объясняется, что означает ошибка сервера 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 ( ) ;

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 //
create procedure test ( )
begin
set @a= 1 ;
select @a;
end //

  • 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

#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

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’ и вносить исправления, но лучше отказаться от использования такого модуля (неизвестно сколько сюрпризов он еще принесет).

P.S. Если после прочтения статьи ваш вопрос с MySQL Error 1064 остался нерешенным, то задавайте его на форуме SQLinfo

Дата публикации: 25.11.2013

© Все права на данную статью принадлежат порталу SQLInfo.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в бумажных изданиях допускается только с разрешения редакции.

#1064 — У вас ошибка в запросе.

Здравствуйте!
Когда нужно внести изменение сразу в большое кол-во материалов на сайте, делаю экспорт базы, затем редактирую ее в блокноте и снова импортирую через phpMyAdmin.
Вот и в этот раз сменился плагин отвечающий за вывод текста в спойлере и нужно было внести изменения в большое кол-во статей.
Заменить шорткод Тут текст скрытый в спойлере

НА:
[spoiler title=’Тут заголовок’]Тут текст скрытый в спойлере[/spoiler]

С тем чтобы заменить

Но чтобы заменить > на ‘] пришлось повозится т.к. естественно что этот символ встречался еще много где.
Вроде как заменял только в коде шорткода, все проверил несколько раз, но при попытке импорта на сайт получил сначала:

INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (1280, 1, '2010-04-06 16:40:20', '0000-00-00 00:00:00', '

Тренинговое занятие

Цели:
• создание позитивного эмоционального фона;
• формирование установки на возможность внутреннего самосовершенствования, снижение тревожности и повышение уровня безопасности.

Возрастная группа:14—17 лет.

Само[. ] #1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около 'Рассматриваемые книги и идеи']1. Джеймс Ален.' на строке 7

А при повторной попытке:

Ошибка Static analysis: 66 errors were found during analysis. Unexpected character. (near ">" at position 22894) Unexpected character. (near ":" at position 23023) Unexpected character. (near ":" at position 23177) Unexpected character. (near ":" at position 23494) Unexpected character. (near ":" at position 23579) Unexpected character. (near ":" at position 24034) Unexpected character. (near ":" at position 24130) Unexpected character. (near ":" at position 24232) Unexpected character. (near ":" at position 24628) Unexpected character. (near ":" at position 24818) Unexpected character. (near ":" at position 24967) Unexpected character. (near ":" at position 25065) Unexpected character. (near ":" at position 25317) Unexpected character. (near ":" at position 25413) Unexpected character. (near ":" at position 25617) Unexpected character. (near "" at position 26190) Unexpected character. (near "[" at position 26356) Unexpected character. (near "]" at position 26365) Unexpected character. (near "" at position 26545) Unexpected character. (near "[" at position 26547) Unexpected character. (near "]" at position 26557) Unexpected character. (near ":" at position 26652) Unexpected character. (near ":" at position 26746) Unexpected character. (near ":" at position 26801) Unexpected character. (near ":" at position 26837) Unexpected character. (near ":" at position 26874) Unexpected character. (near ":" at position 26909) Unexpected character. (near ":" at position 26950) Unexpected character. (near ":" at position 26992) Unexpected character. (near ":" at position 27521) Unexpected character. (near ":" at position 27524) Unexpected character. (near ":" at position 27544) Unexpected character. (near ":" at position 27547) Unexpected character. (near ":" at position 27681) Unexpected character. (near ":" at position 27684) Unexpected character. (near ":" at position 27704) Unexpected character. (near ":" at position 27707) Unexpected character. (near "?" at position 28007) Unexpected character. (near "?" at position 28213) Unexpected character. (near "?" at position 28244) Unexpected character. (near "?" at position 28376) Unexpected character. (near "?" at position 28973) Unexpected character. (near ":" at position 29653) Unexpected character. (near ":" at position 30113) Unexpected character. (near ":" at position 30683) Unexpected character. (near ":" at position 30801) Unexpected character. (near ":" at position 31442) Unexpected character. (near "?" at position 31759) Unexpected character. (near "?" at position 31788) Unexpected character. (near "?" at position 31861) Unexpected character. (near ":" at position 32352) Unexpected character. (near "?" at position 32793) Unexpected character. (near "?" at position 32824) Unexpected character. (near "?" at position 32956) Unexpected character. (near ":" at position 33139) Unexpected character. (near ":" at position 33142) Unexpected character. (near ":" at position 33162) Unexpected character. (near ":" at position 33165) Unexpected character. (near ":" at position 33281) Unexpected character. (near ":" at position 33284) Unexpected character. (near ":" at position 33304) Unexpected character. (near ":" at position 33307) Unexpected character. (near ":" at position 33333) 23 values were expected, but found 137. (near "(" at position 21245) SQL запрос: INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (1280, 1, '2010-04-06 16:40:20', '0000-00-00 00:00:00', '

Тренинговое занятие

Тут большой фрагмент текста Попробуйте примерить на себе следующие принципы конструктивной критики.
', 'publish', 'open', 'open', '', '7-principov-konstruktivnoi-kritiki', '', '', '2010-04-13 17:59:41', '2010-04-13 14:59:41', '', 0, '/principov-konstruktivnoi-kritiki.html', 20, 'post', '', 0), (1291, 1, '2010-04-24 00:00:00', '2010-04-23 21:00:00', '

Название: Влияние семьи на воспитание  Ответ MySQL: Документация #1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около 'Рассматриваемые книги и идеи>1. Джеймс Ален. ' на строке 7

Подскажите, пожалуйста, как можно исправить ошибку?

SQL error 1064 – что делать?

img

Вам когда-нибудь приходилось видеть ошибку 1064 при работе с MySQL? Причем она указывает на некие синтаксические ошибки в SQL запросе, и эти ошибки могут быть совсем неочевидны – подробнее расскажем ниже.

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

У каждой версии MySQL есть свой список зарезервированных слов – эти слова используются для особых задач или особых функций внутри движка MySQL. При попытке использовать какие-то из них, вы получите ту самую ошибку 1064. К примеру, ниже пример SQL запроса, который использует зарезервированное слово в качестве имени таблицы.

CREATE TABLE alter (first_day DATE, last_day DATE);

Как этого избежать? Просто! Только потому что слово alter зарезервировано, это не значит, что его нельзя использовать – нужно просто по-особенному приготовить! Чтобы движок MySQL не воспринимал это слово как команду, мы будем просто использовать кавычки и оно взлетит:

CREATE TABLE ‘alter’ (first_day DATE, last_day DATE);
Недостающая информация в таблице

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

SELECT * from employees WHERE employeeID = $id

Если пресловутый $id никогда не был правильно указан, запрос будет выглядеть для MySQL сервера следующим образом:

SELECT * from employees WHERE employeeID =

Т.к запрос по сути пустой, движок MySQL будет выдавать ту самую ошибку 1064. Исправляется это следующим образом – вам нужно каким-то образом вызвать конкретную запись и добавить недостающую информацию, причем сделать это не так просто: если пытаться вызвать запись по уникальному номеру, скорее всего вы увидите точно такую ошибку. Можно с помощью phpMyAdmin вручную выбрать необходимую строку и добавить нужную информацию.

Опечатки в командах

 SQL error 1064 – что делать

Одной из самых частых причин ошибки 1064 являются опечатки. И иногда можно десять раз посмотреть на команду и не увидеть опечатки – как пример ниже с командой UPDATE:

UDPATE table1 SET

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

UPDATE table1 SET >
Устаревшие команды

Некоторые команды устарели, и в новых версиях MySQL начинают выдавать хорошо знакомую нам ошибку. К примеру, команда ‘TYPE’ была признана устаревшей в MySQL 4.1 и была полностью удалена в MySQL 5.1, где при попытке использовать ее вы можете видеть ту самую ошибку. Вместо нее необходимо использовать команду ‘ENGINE’.

Ниже неверный вариант:

CREATE TABLE merionet (i INT) TYPE = INNODB;

А вот правильный, модный и современный вариант (как оно должно быть, чтобы не было ошибки):

CREATE TABLE merionet (i INT) ENGINE = INNODB;
Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *