Error 1064 42000 mysqldump

MySQL error 1064 Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru Статья ориентирована на новичков. В ней объясняется, что означает ошибка сервера MySQL №1064, рассматриваются типичные ситуации и причины возникновения этой ошибки, а также даются рекомендации по исправлению. Рассмотрим простейший пример. Сервер MySQL сообщает, что в первой строке нашего SQL запроса имеется синтаксическая […]

Содержание

  1. MySQL error 1064
  2. 1. Запрос в редакторе.
  3. 2. Перенос базы на другой сервер.
  4. 3. Некорректная работа сайта.
  5. Форум пользователей MySQL
  6. #1 22.11.2010 05:31:00
  7. ERROR 1064 (42000) Я Полный чайник
  8. #2 22.11.2010 06:42:48
  9. Re: ERROR 1064 (42000) Я Полный чайник
  10. #3 23.11.2010 01:50:30
  11. Re: ERROR 1064 (42000) Я Полный чайник
  12. #4 23.11.2010 01:59:31
  13. Re: ERROR 1064 (42000) Я Полный чайник
  14. #5 23.11.2010 15:28:00
  15. Re: ERROR 1064 (42000) Я Полный чайник

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

#1 22.11.2010 05:31:00

ERROR 1064 (42000) Я Полный чайник

Прошу прощения у уважаемых пользователей, но я полный чайник, и почитав статьи по основам, не понимаю причины происхождения данной ошибки:

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 ‘IF EXISTS’ at line 1

Стоит MySQL 5.1
Импортирую схему именно для MySQL, правда, для какой версии — точно не знаю

Подскажите, где ошибка в синтаксисе, и как он должен выглядеть, либо киньте ссылку, на поддерживаемые функции данной версии и их описание, пожалуйста

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

Отредактированно NewUse (22.11.2010 05:31:34)

#2 22.11.2010 06:42:48

Re: ERROR 1064 (42000) Я Полный чайник

#3 23.11.2010 01:50:30

Re: ERROR 1064 (42000) Я Полный чайник

Да, спасибо, заработало, помогите, пожалуйста исправить ещё одну ошибочку такого же типа (несовместимость версий):
Сайтик под предположительно php4+MySQL — версия ранняя 2004г или ранее:

while ( $row = $query -> fetchRow ( ) ) <
unset ( $ROW ) ;
$row [ packet ] = «$row[packet] n » ;
$TMP_ROW = «» » . $INDEX_PAGE [ edit ] . » » border=0> n » ;
if ( $row [ action ] > 0 ) <
$TMP_ROW .= » | » » . $INDEX_PAGE [ price ] . » » border=0> n » ;
>
$TMP_ROW .= » | » » . $NIBS_TEXT [ delete ] . » » border=0> n » ;
$row [ action ] = $TMP_ROW ;
$count = $db -> getRow ( «select count($username) as $username from users where gid=$row[gid]» ) ;
$row [ num_users ] = $count [ $username ] ;
$TOTAL_USER += $count [ $username ] ;
$TRAF_ARRAY = $db -> GetRow ( «select sum(in_bytes) as in_bytes, sum(out_bytes) as out_bytes from » .NIBS_ACCT_TABLE. » where gid=» . $row [ gid ] ) ;
$row [ gid ] = round ( $TRAF_ARRAY [ in_bytes ] / ( 1024 * 1024 ) , $ROUND_DIGIT ) . «/» ;
$row [ gid ] .= round ( $TRAF_ARRAY [ out_bytes ] / ( 1024 * 1024 ) , $ROUND_DIGIT ) ;
$TOTAL_IN += $TRAF_ARRAY [ in_bytes ] ;
$TOTAL_OUT += $TRAF_ARRAY [ out_bytes ] ;
while ( list ( $key , $val ) = each ( $row ) ) <
if ( $HEADER ) <
$TMP_HEADER [ ] = array ( VARS => $NIBS_TEXT [ $key ] ,
TD_CLR => HDR_CLR,
TH => true ) ;
>
$ROW [ ] = array ( VARS => $val ,
TD_PAR => «align=middle» ,
TD_CLR => DEF_CLR ) ;
>
if ( $HEADER ) <
$HEADER = false ;
$ARRAY [ ] = $TMP_HEADER ;
>
$ARRAY [ ] = $ROW ;

PHP Fatal error: Call to a member function fetchRow() on a non-object in /usr/local/www/data/index.php on line 13

#4 23.11.2010 01:59:31

Re: ERROR 1064 (42000) Я Полный чайник

Как следует из текста ошибки — Вы пытаетесь вызвать метод у сущности,
не являющейся объектом. Задавайте, пожалуйста, вопросы по PHP на
webew.ru.

#5 23.11.2010 15:28:00

Re: ERROR 1064 (42000) Я Полный чайник

Спасибо, а такой синтаксис в MySQL5 допустим?

Источник

#php #mysql #database #wamp #wampserver

#php #MySQL #База данных #wamp #WampServer

Вопрос:

Когда я пытаюсь создать резервную копию всех баз данных в консоли mysql сервера wamp. Я получаю сообщение об ошибке MySQL.

ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы указать пользователю правильный синтаксис рядом с ‘mysqldump -urroot -pstriker —all-databases —routines > C:/alldb.sql » в строке 1

Версия MYSQL 5.7.21

Версия WampServer 3.1.3 64bit

Не могли бы вы помочь в этом?

Команда MySQL

  mysqldump -uroot -pstriker --all-databases --routines > C:/alldb.sql;
 OR
 mysqldump -uroot -pstriker --all-databases --routines > C:alldb.sql;
  

Комментарии:

1. Вы запускаете это в командной строке или непосредственно в клиенте mysql? Эта команда должна быть запущена в командной строке.

2. @aynber. Я работаю на консоли MySQL на сервере Wamp

3. Хорошо, так что да, это нужно запускать в реальной командной строке, а не внутри клиента mysql. Это внешняя команда MySQL.

4. На самом деле mysqldump — это программа.

5. ДА. Я знал, что это программа. Даже попробуйте командную строку Windows. mysqldump.exe -urroot -pstriker -все базы данных -подпрограммы > C:alldb.sql ; сервер wamp-> mysql-> консоль mysql-> выполняемая команда. Это не работает. У вас есть какие-либо идеи, как экспортировать все базы данных ?.

Ответ №1:

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

 mysqldump -uroot -pstriker --all-databases --routines > D:alldb.sql;
  

So, you’re creating a custom SQL query to perform a task in the database. After putting the code together and running it in PHPmyAdmin it responds with a 1064 error. It may look similar to this:

1064 error message

The 1064 error displays any time you have an issue with your SQL syntax, and is often due to using reserved words, missing data in the database, or mistyped/obsolete commands. So follow along and learn more about what the 1064 error is, some likely causes, and general troubleshooting steps.

Note: Since syntax errors can be hard to locate in long queries, the following online tools can often save time by checking your code and locating issues:

  • PiliApp MySQL Syntax Check
  • EverSQL SQL Query Syntax Check & Validator

Causes for the 1064 error

  • Reserved Words
  • Missing Data
  • Mistyped Commands
  • Obsolete Commands

This may seem cryptic since it is a general error pointing to a syntax issue in the SQL Query statement. Since the 1064 error can have multiple causes, we will go over the most common things that will result in this error and show you how to fix them. Follow along so you can get your SQL queries updated and running successfully.

Using Reserved Words

Every version of MySQL has its own list of reserved words. These are words that are used for specific purposes or to perform specific functions within the MySQL engine. If you attempt to use one of these reserved words, you will receive the 1064 error. For example, below is a short SQL query that uses a reserved word as a table name.

CREATE TABLE alter (first_day DATE, last_day DATE);

How to fix it:

Just because the word alter is reserved does not mean it cannot be used, it just has special requirements to use it as the MySQL engine is trying to call the functionality for the alter command. To fix the issue, you will want to surround the word with backticks, this is usually the button just to the left of the “1” button on the keyboard. The code block below shows how the code will need to look in order to run properly.

CREATE TABLE `alter` (first_day DATE, last_day DATE);

Missing Data

Sometimes data can be missing from the database. This causes issues when the data is required for a query to complete. For example, if a database is built requiring an ID number for every student, it is reasonable to assume a query will be built to pull a student record by that ID number. Such a query would look like this:

SELECT * from students WHERE studentID = $id

If the $id is never properly filled in the code, the query would look like this to the server:

SELECT * from students WHERE studentID =

Since there is nothing there, the MySQL engine gets confused and complains via a 1064 error.

How to fix it:

Hopefully, your application will have some sort of interface that will allow you to bring up the particular record and add the missing data. This is tricky because if the missing data is the unique identifier, it will likely need that information to bring it up, thus resulting in the same error. You can also go into the database (typically within phpMyAdmin) where you can select the particular row from the appropriate table and manually add the data.

Mistyping of Commands

One of the most common causes for the 1064 error is when a SQL statement uses a mistyped command. This is very easy to do and is easily missed when troubleshooting at first. Our example shows an UPDATE command that is accidentally misspelled.

UDPATE table1 SET id = 0;

How to fix it:

Be sure to check your commands prior to running them and ensure they are all spelled correctly.

Below is the syntax for the correct query statement.

UPDATE table1 SET id = 0;

Obsolete Commands

Some commands that were deprecated (slated for removal but still allowed for a period of time) eventually go obsolete. This means that the command is no longer valid in the SQL statement. One of the more common commands is the ‘TYPE‘ command. This has been deprecated since MySQL 4.1 but was finally removed as of version 5.1, where it now gives a syntax error. The ‘TYPE‘ command has been replaced with the ‘ENGINE‘ command. Below is an example of the old version:

CREATE TABLE t (i INT) TYPE = INNODB;

This should be replaced with the new command as below:

CREATE TABLE t (i INT) ENGINE = INNODB;

For developers or sysadmins experienced with the command line, get High-Availability and Root Access for your application, service, and websites with Cloud VPS Hosting.

Error 1064 Summary

As you can see there is more than one cause for the 1064 error within MySQL code. Now, you know how to correct the issues with your SQL Syntax, so your query can run successfully. This list will be updated as more specific instances are reported.

Парни, привет.

Суть проблемы — есть хилая виртуальная машина в Azure (2Гб ОЗУ, 1 проц), на которой стоит MySQL Ver 14.14 Distrib 5.6.39, for FreeBSD10.3 и на которую нужно импортировать БД из дампа объемом порядка 7 Гигабайт, полученного из рабочей БД с MySQL Ver 14.14 Distrib 5.6.26, for FreeBSD10.2

В результате запуска импорта БД путем команды

Bash
1
sudo mysql -uUsername -p DBName < /home/username/utm5/dbbackup2222018

через час с небольшим получаю сообщение:

MySQL
1
ERROR 1064 (42000) at line 5990: 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

Конфиг MySQL сервера на виртуальной машине

Кликните здесь для просмотра всего текста

[mysql]
default-character-set=utf8

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 0
key_buffer_size = 32M
innodb_flush_method=O_DSYNC
innodb_file_per_table = 1
innodb_additional_mem_pool_size = 100M
wait_timeout = 4800
connect_timeout = 4800
max_allowed_packet=16M
max_connections = 128
net_write_timeout = 4800
net_read_timeout = 4800
#log_slow_queries=/var/lib/mysql/data/slow.log
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake = 1
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = …..
# datadir = …..
# port = …..
# server_id = …..
# socket = …..

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLE S

[mysqldump]
max_allowed_packet = 128M
net_write_timeout = 3000
net_read_timeout = 3000

В hosname.err никаких ошибок не заметил, только информационные сообщения.

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

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Oops!! Stuck with MySQL Error code 1064 SQL State 42000? We can help you in fixing it.

The SQL State Error 42000 occurs mainly due to the SQL syntax error or due to the outdated JDBC MySQL driver.

At Bobcares, we often get requests to fix MySQL errors, as a part of our Server Management Services.

Today, let’s see how our Support Engineers fix MySQL errors for our customers.

Why MySQL Error code 1064 SQL State 42000 occurs?

The MySQL Error code mainly occurs due to the SQL Syntax error. It happens when MySQL is unable to validate the commands.

The Syntax Error occurs due to many factors like mistyping the commands, deprecated or missing data from the database.

In some cases, the error occurs when the JDBC driver initializes the connection.

MySQL Error code 1064 SQL State 42000

How we fix the MySQL Error code 1064?

Recently, one of our customers approached us saying that he is getting MySQL Error code 1064 SQL State 42000. On checking, we found an error in the SQL syntax.

Now, let’s see the main causes for this Error 1064 SQL State 42000 and how our Support Engineers fix them.

1. Using Reserved Words

The reserved words perform some specific functions within the MySQL engine.

Sometimes we receive the error while using the reserved words,  The error occurs when the MySQL is not meeting the exact requirements for using the particular keyword.

Create Table alter (first name, last name);

The alter is a reserved word. To fix the error 1064 with the reserved word we specify the alter word within backticks.

Create Table 'alter' (first name, last name);

2. Outdated JDBC driver

When the JDBC driver initializes the connection, it sends several commands to the MySQL server. At that time we may receive the MySQL Error code SQL State 42000.

The problem is that the commands were deprecated for some time which results in the error.

We fix the error by upgrading the JDBC MySQL driver to the latest version.

3. Mistyping and Missing of Data

The 1064 error occurs when the data is not found in the database or mistyping the commands.

In case, if the data is missing from the database, we manually add the data to the database. Also, we make sure that all the commands are spelled correctly.

[Need any assistance with SQL State 42000 Error codes? – We’ll help you]

Conclusion

In short, today we discussed in detail on MySQL Error code 1064 and saw how our Support Engineers find the fix for this error.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

var google_conversion_label = «owonCMyG5nEQ0aD71QM»;

Понравилась статья? Поделить с друзьями:
  • Error 1064 42000 at line 1 you have an error in your sql syntax
  • Error 1062 служба не запущена
  • Error 105 name not resolved одноклассники
  • Error 1062 duplicate entry 1 for key book primary
  • Error 1061 the service cannot accept control messages at this time