Skip to content

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

@andynguyen91

Description

@andynguyen91

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());
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions