Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > ERROR 1064 (42000) в MYSQL


Автор: Vicul 6.6.2010, 09:20
Всем привет, 

установил mysql на SUSE 11.2  без проблем.  Запустил демон, 
вхожу в консоль  через mysql -u root.  Теперь пытаюсь выполнить 
команды SELECT_VERSION() и CURRENT_DATE  там и получаю ошибку
 ERROR 1064.

Вот полная распечатка, на всякий случай дал распечатку и для status:
 
Цитата

mysql> SELECT_VERSION();
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 'SELECT_VERSION()' at line 1
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.36, for suse-linux-gnu (i686) using readline 6.0

Connection id:  2
Current database:    
Current user:  root@localhost
SSL:    Not in use
Current pager:  less
Using outfile:  ''
Using delimiter:    ;
Server version:  5.1.36-log SUSE MySQL RPM
Protocol version:    10
Connection:  Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:  /var/run/mysql/mysql.sock
Uptime:    26 min 33 sec

Threads: 1  Questions: 23  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.14
--------------

 

Сижу уже день - не могу понять в чем проблема. На 4-ке мускула работало.


Автор: UserNet 6.6.2010, 11:57
Код

SELECT VERSION(), CURRENT_DATE;

Попробуй так.

Автор: Vicul 6.6.2010, 14:57
заработало! 

Автор: Vicul 9.6.2010, 09:13
Опять таже ошибка, но проблема с вложенными записями для INSERT /SELECT.

Создал две таблицы instr и data. 

Цитата

+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id_instr | int(11) unsigned | NO   | PRI | NULL    | auto_increment | 
| secid    | char(13)         | NO   | UNI | NULL    |                | 
+----------+------------------+------+-----+---------+----------------+

+-----------+---------------------+------+-----+---------+----------------+
| Field     | Type                | Null | Key | Default | Extra          |
+-----------+---------------------+------+-----+---------+----------------+
| id_data   | int(11) unsigned    | NO   | PRI | NULL    | auto_increment | 
| id_instr  | int(11)             | NO   |     | NULL    |                | 
| lastvalue | float               | YES  |     | 0       |                | 
| valtoday  | bigint(20) unsigned | YES  |     | 0       |                | 
| systime   | int(10) unsigned    | YES  |     | 0       |                | 
+-----------+---------------------+------+-----+---------+----------------+



Во второй таблице второе поле - есть первичный ключ первой таблицы.

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

Цитата

insert into data
    -> values(0, id, 3134.65, 54678318329, unix_timestamp('2010-06-08 18:45:01'))
    -> select id_instr as id from instr
    -> where secid='12INDEX123';


Получаю ERROR 1064 (42000).  
Если делать все без вложения, через переменную - все ок.

 

Автор: Akina 9.6.2010, 10:09
Вам надо учить основы SQL, батенька. Ибо до тех пор, пока Вы будете писАть кривые запросы, не соблюдая синтаксис, до тех пор и будете получать сообщения об ошибках.

Автор: Vicul 9.6.2010, 10:18
Цитата

Вам надо учить основы SQL,


Дык, а чем я по вашему сейчас занимаюсь  smile 

Автор: Akina 9.6.2010, 10:26
То есть написанная конструкция 
Код

insert into ... values .. select ... from ... where ... ;
Вас ничем не смущает?

Автор: Vicul 9.6.2010, 10:32
если бы смущала - не писал - вложение в Insert 
или я так не могу сделать?

Автор: Akina 9.6.2010, 11:31
Vicul, изложите логику своего запроса (мне она как-то не поддаётся).
А вообще начните http://www.intuit.ru/department/database/rdbintro/, плюс указанные там же дополнительные курсы.

Автор: Vicul 9.6.2010, 11:36
Цитата

т.е. определить значение первичного ключа записи в впервой таблице 
и записать его во второе поле второй таблицы

Автор: Akina 9.6.2010, 12:48
Код

insert into data (id_instr, lastvalue, valtoday, systime)
select id_instr, 3134.65, 54678318329, unix_timestamp('2010-06-08 18:45:01'),  
from instr 
where secid='12INDEX123';

А тебя не смущает, что в одной таблице id_instr unsigned, а в другой нет?

Автор: Vicul 9.6.2010, 13:01
Вот уже третий день, как изучаю эту субд - все смущает.
Сейчас подправлю

Добавлено через 3 минуты и 50 секунд
Цитата

+-----------+---------------------+------+-----+---------+----------------+
| Field     | Type                | Null | Key | Default | Extra          |
+-----------+---------------------+------+-----+---------+----------------+
| id_data   | int(11) unsigned    | NO   | PRI | NULL    | auto_increment | 
| id_instr  | int(11) unsigned    | NO   |     | NULL    |                | 
| lastvalue | float               | YES  |     | 0       |                | 
| valtoday  | bigint(20) unsigned | YES  |     | 0       |                | 
| systime   | int(10) unsigned    | YES  |     | 0       |                | 
+-----------+---------------------+------+-----+---------+----------------+


оно и было так

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)