Ошибка 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

Здравствуйте!
При импорте базы на новый хостинг восникает эта ошибка:
#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

Re: Ошибка 1064

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

Что значит сайт перекошен?

3 Ответ от Svetlana 2013-11-02 22:00:43 (изменено: Svetlana, 2013-11-02 22:08:17)

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

Re: Ошибка 1064

Не находит путь /gabarit39.ru/index.php
Вероятно домен указан, как часть пути, поэтому возникла проблема. Посмотрите настройки скрипта, возможно это можно исправить. Думаю база данных здесь ни при чем.

Ошибка #1064 в Mysql Печать

Возникает данная ошибка при использовании phpmyadmin для импортирования БД, в связи с присутствием в дампе непечатных символов (стоит заметить, что ошибка не появляется при использовании консольной утилиты mysql для импорта БД). Проблема решается следующим образом:

Откройте дамп БД с помощью любого текстового редактора.
Начиная с начала файла, удалите все строки-комментарии до первой исполняемой строки sql. Например в дампе стандартной сборке CMS Joomla первым исполняемым запросом является запрос на создание таблицы jos_banner:
CREATE TABLE `jos_banner` (

Сохраните файл и попробуйте импортировать дамп снова.

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

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