Magestore / CoreSuccess-M1

0 stars 0 forks source link

Lỗi foreign key khi convert stock data từ IM cũ sang IM Rebuilt #1

Open andynguyen91 opened 7 years ago

andynguyen91 commented 7 years ago

app\code\local\Magestore\Coresuccess\Model\Mysql4\QueryProcessor.php line 50: Đoạn này có thể sẽ throw lỗi foreign key từ SQL (case: https://magestore.zendesk.com/agent/tickets/43105 )

try{ $connection->beginTransaction(); foreach($queries as $queryData) { if(!isset($queryData['type'])) { continue; } switch($queryData['type']) { case self::QUERY_TYPE_INSERT: $connection->insertOnDuplicate($queryData['table'], $queryData['values']); break; case self::QUERY_TYPE_UPDATE: $connection->update($queryData['table'], $queryData['values'], $queryData['condition']); break; case self::QUERY_TYPE_DELETE: $connection->delete($queryData['table'], $queryData['condition']); break; } } $connection->commit(); } catch (Exception $e) { $connection->rollBack(); throw new Exception($e->getMessage()); }

Suggested fix:

try{ $connection->beginTransaction(); $connection->query('SET FOREIGN_KEY_CHECKS = 0'); foreach($queries as $queryData) { if(!isset($queryData['type'])) { continue; } switch($queryData['type']) { case self::QUERY_TYPE_INSERT: $connection->insertOnDuplicate($queryData['table'], $queryData['values']); break; case self::QUERY_TYPE_UPDATE: $connection->update($queryData['table'], $queryData['values'], $queryData['condition']); break; case self::QUERY_TYPE_DELETE: $connection->delete($queryData['table'], $queryData['condition']); break; } } $connection->query('SET FOREIGN_KEY_CHECKS = 1'); $connection->commit(); } catch (Exception $e) { $connection->rollBack(); throw new Exception($e->getMessage()); }