Jump to content

InnoDB vs MyISAM


Recommended Posts

Год назад я делал себе мультивалюту для престы 1.5 и всё чудесно работало.

 

При изменении валюты выполнялся запрос примерно такого вида:

UPDATE ps_product t1 JOIN ps_product_shop t2 ON t1.id_product=t2.id_product SET t1.price=ROUND(t1.base_price / 0.039), t2.price=ROUND(t1.base_price / 0.039) WHERE t1.base_currency=2;

и автоматом изменялись цены на все товары с указанной валютой.

 

Сейчас адаптировал с некоторыми изменениями под престу 1.6 и застрял на одном моменте. Этот запрос не работает! Даже если запускать его через phpMyAdmin.

Больше грешу на используемый тип БД: в 1.5 используется MyISAM, в 1.6 - InnoDB (сама сделала при установке).

Если дело только в этом, то прошу направить на путь истинный как побороть эту беду.

Link to comment
Share on other sites

Год назад я делал себе мультивалюту для престы 1.5 и всё чудесно работало.

 

При изменении валюты выполнялся запрос примерно такого вида:

 

UPDATE ps_product t1 JOIN ps_product_shop t2 ON t1.id_product=t2.id_product SET t1.price=ROUND(t1.base_price / 0.039), t2.price=ROUND(t1.base_price / 0.039) WHERE t1.base_currency=2;
и автоматом изменялись цены на все товары с указанной валютой.

 

Сейчас адаптировал с некоторыми изменениями под престу 1.6 и застрял на одном моменте. Этот запрос не работает! Даже если запускать его через phpMyAdmin.

Больше грешу на используемый тип БД: в 1.5 используется MyISAM, в 1.6 - InnoDB (сама сделала при установке).

Если дело только в этом, то прошу направить на путь истинный как побороть эту беду.

Запрос должен выполняться в обоих типах. Какая выводится ошибка?
Link to comment
Share on other sites

В том-то и дело, что никакой.

В phpMyAdmin пишет "Затронуто 0 строк. (Запрос занял 0.0023 сек.)"

 

Пробовал делать так:

SELECT * FROM ps_product t1 JOIN ps_product_shop t2 ON t1.id_product=t2.id_product FOR UPDATE;
UPDATE ps_product t1 JOIN ps_product_shop t2 ON t1.id_product=t2.id_product SET t1.price=ROUND(t1.base_price / 0.039), t2.price=ROUND(t1.base_price / 0.039) WHERE t1.base_currency=2;
Выдает:

SELECT * FROM ps_product t1 JOIN ps_product_shop t2 ON t1.id_product=t2.id_product FOR UPDATE;# Строки: 98
UPDATE ps_product t1 JOIN ps_product_shop t2 ON t1.id_product=t2.id_product SET t1.price=ROUND(t1.base_price / 0.039), t2.price=ROUND(t1.base_price / 0.039) WHERE t1.base_currency=2;# MySQL вернула пустой результат (т.е. ноль строк).
 

В какую сторону копать непонятно.

Link to comment
Share on other sites

  • 3 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...