Автор Тема: глюк в множественных UPDATE\'ах  (Прочитано 2549 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
глюк в множественных UPDATE\'ах
« : 27 Июня 2003, 15:27:13 »
Реальный пример:

CREATE TEMPORARY TABLE tmp_order ( product_id int(10) unsigned NOT NULL default \'0\', kol smallint(5) unsigned NOT NULL default \'0\', price smallint(5) unsigned NOT NULL default \'0\', ver_full varchar(100) NOT NULL default \'\', KEY product_id (product_id) ) TYPE=HEAP;
INSERT tmp_order VALUES (\'3\',\'1\',\'0\',\'\'),(\'4\',\'1\',\'0\',\'\');
UPDATE price p, tmp_order t SET t.ver_full=IF(f_update=\'y\', CONCAT(description, \', #\', kol), p.ver_full) , kol=IF(f_update=\'y\' AND kol>1, 1, kol) , t.price=IF(f_update=\'y\', p.price, p.price*1) WHERE p.id_order=t.product_id;

Ответ:
0 rows affected
2 rows affected
1142: update command denied to user: \'...\' for table \'tmp_order\' > -1 rows affected

Знаю что надо бы пнуть админа (но он куда-то) отлучился.

Подскажите в чём глюк: в версии мускулю, в правах (если в правах, то подскажите какие надо выставить) или в чём другом...

Мои права:
GRANT SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES ON *.* TO \',,,\'@\'.....ru\' IDENTIFIED BY PASSWORD
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `...`.* TO \'...\'@\'...\'

Версия - 4.0.11a-gamma
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
глюк в множественных UPDATE\'ах
« Ответ #1 : 27 Июня 2003, 16:05:20 »
гм, с правами все ок.
Единственное что приходит в голову это то, что CREATE TEMPORARY TABLES - это глобальная привилегия, возможно у них какие-то глюки и для выборки из временной таблицы при множественном апдейте оно требует глобальную привилегию UPDATE.
хотя это смахивает на багу.
Попробуй обновить версию, т.к. 4.0.11 - это даже не stable
На Машине Тьюринга далеко не уедешь.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
глюк в множественных UPDATE\'ах
« Ответ #2 : 27 Июня 2003, 16:23:52 »
Цитировать
fidget:
CREATE TEMPORARY TABLES

Я пробовал и с обычными таблицами - такая же ботва

Кстати, если пишешь
UPDATE tmp_order t, price p SET t.ver_full=IF(f_update.......

(поменял местами)
то пишет
1142: update command denied to user: \'...\' for table \'price\' > -1 rows affected

Так что не в этом дело.

Я админа уже попинал. Сказал что вечерком соберёт 4.0.13
Я думаю это всётаки глючёк.

А пока я заменил эту ботву 5-ю запросами вместо 1 апдейта
CREATE TEMPORARY TABLE tmp_order2 ( product_id int(10) unsigned NOT NULL default \'0\', kol smallint(5) unsigned NOT NULL default \'0\', price smallint(5) unsigned NOT NULL default \'0\', ver_full varchar(100) NOT NULL default \'\', KEY product_id (product_id) ) TYPE=HEAP;
INSERT tmp_order2 SELECT t.product_id, IF(f_update=\'y\' AND kol>1, 1, kol), IF(f_update=\'y\', p.price, p.price*1), IF(f_update=\'y\', CONCAT(description, \', #\', kol), p.ver_full)
FROM price p, tmp_order t WHERE p.id_order=t.product_id;

TRUNCATE TABLE tmp_order;
INSERT tmp_order SELECT * FROM tmp_order2;
DROP TABLE tmp_order2;
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28