обнаружен тупик на MySql5.0, но не найден после MySql5.6 - PullRequest
0 голосов
/ 30 апреля 2020
CREATE TABLE 'test'.'t1' (
  'id' INT NULL);
CREATE TABLE 'test'.'t2' (
  'id' INT NULL);

INSERT INTO test.t1 VALUES(1);
INSERT INTO test.t2 VALUES(1);

example1:

sqlConnection1:

    SET autocommit = 0;
    START TRANSACTION;
    UPDATE test.t1 set id = 1 WHERE id = 2;

sqlConnection2:

    SET autocommit = 0;
    START TRANSACTION;
    LOCK TABLES test.t2 WRITE,test.t1 WRITE;
    COMMIT;
    UNLOCK TABLES;

sqlConnection1:

    UPDATE test.t2 set id = 1 where id = 2;
    COMMIT;

sqlConnection2:

    ERROR 1213 (40001): Deadlock found when trying to get lock; try restart transaction

example2:

sqlConnection1:

    SET autocommit = 0;
    START TRANSACTION;
    UPDATE test.t1 set id = 1 WHERE id = 1;

sqlConnection2:

    SET autocommit = 0;
    START TRANSACTION;
    LOCK TABLES test.t2 WRITE,test.t1 WRITE;
    COMMIT;
    UNLOCK TABLES;

sqlConnection1:

    UPDATE test.t2 set id = 1 where id = 1;
    COMMIT;

sqlConnection1 :

    ERROR 1213 (40001): Deadlock found when trying to get lock; try restart transaction

example3:

взаимоблокировка не найдена после mysql5.6

вопрос:

Что приводит к отличиям результатов в трех примерах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...