SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.05.2010 22:04:54

FiMko
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 18.09.2009
Сообщений: 198

INSERT INTO SELECT убивает MySQL

Ребята, всем привет и с прошедшими!

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

Имеется таблица:


mysql> describe word_forms;
+----------+---------+------+-----+---------+-------+
| Field    | Type    | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| word1_id | int(11) | NO   | PRI |         |       |
| word2_id | int(11) | NO   | PRI |         |       |
+----------+---------+------+-----+---------+-------+
 
Выполняю вставку:

mysql> INSERT IGNORE INTO word_forms select 1 union select 3;
 
После этого MySql стабильно подвешивается и после этого падает.

У вас есть к-л мысли о возможных причинах?

---

mysql> select version();
+-------------------------+
| version()               |
+-------------------------+
| 5.0.45-community-nt-log |
+-------------------------+
 

Отредактированно FiMko (10.05.2010 22:15:38)

Неактивен

 

#2 10.05.2010 22:19:52

FiMko
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 18.09.2009
Сообщений: 198

Re: INSERT INTO SELECT убивает MySQL

Во блин, убрал IGNORE и узрел "ERROR 1136 (21S01): Column count doesn't match value count at row 1"...
Тогда другой вопрос: IGNORE я использовал, т.к. имеется уникальный ключ по двум полям - 'word1_id' и 'word2_id', соответственно при вставке дублирующих значений я, используя IGNORE, планировал избежать ненужных сообщений о дубликатах. Как быть если возникают другие ошибки (не ошибки дублирования значений), ведь MySQL похоже подвешивается hmm?

Отредактированно FiMko (10.05.2010 22:25:13)

Неактивен

 

#3 11.05.2010 12:21:44

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: INSERT INTO SELECT убивает MySQL

У меня не подвешивается ни на одном из запросов sad

Код:

[celestia root test > create table wf (a int, b int, primary key (a,b));
Query OK, 0 rows affected (0.20 sec)

[celestia] root test > insert wf select 1 union select 2;
ERROR 1136 (21S01): Column count doesn't match value count at row 1
[celestia] root test > insert ignore wf select 1 union select 2;
Query OK, 0 rows affected, 1 warning (0.00 sec)

[celestia] root test > show warnings;
+-------+------+-------------------------------------------------+
| Level | Code | Message                                         |
+-------+------+-------------------------------------------------+
| Error | 1136 | Column count doesn't match value count at row 1 |
+-------+------+-------------------------------------------------+
1 row in set (0.00 sec)

Если Вы хотите игнорировать конкретную ошибку — можете в данном случае
использовать INSERT … ON DUPLICATE KEY UPDATE, хотя, если писать разумный
код, то других ошибок не будет. Ну или корректно обрабатывать код ошибки —
тоже вполне себе вариант.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson