|
Не получается управлять транзакциями
|
|||
---|---|---|---|
#18+
Здравствуйте, форумчане ! Есть скрипт: USE MyBase INSERT INTO Table1(...) SELECT ... UPDATE Table1 SET ... WHERE ... который нужно проверить. В MS SQL я пишу так: USE MyBase START TRANSACTION <тело скрипта> SELECT * FROM Table1 --Проверка результатов ROLLBACK TRANSACTION и спокоен, потому что знаю, что в базе ничего не поменяется. В MySQL пишу USE MyBase START TRANSACTION; <тело скрипта> SELECT * FROM Table1 --Проверка результатов ROLLBACK; Затем смотрю что в базе и вижу, что все изменения сохранились. Замечательно, лезу в гугль, например сюда: https://terra-informatica.org/vse-o-mysql-upravlenie-povedeniem-tranzaktsii Читаю про системную переменную AUTOCOMMIT, которую можно переключить. Переключаю. Запускаю. Все хорошо-база осталась прежней. А теперь вопрос: зачем нужные все эти Start transaction и Commit/Rollback, если серверу они до форточки и он смотрит только в переменную ? MySQL 5.1.73 На всякий случай, клиент DbForge ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 22:50 |
|
Не получается управлять транзакциями
|
|||
---|---|---|---|
#18+
Проверяйте внимательно. START TRANSACTION на время транзакции неявно устанавливает autocommit=0 Проверьте тип таблицы, он должен быть транзакционным (InnoDB) фидл версия 5.5 но в 5.1 работает также https://dbfiddle.uk/?rdbms=mysql_5.5&fiddle=18b9ccf76f1711f28a6159f032321ea3 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 01:34 |
|
Не получается управлять транзакциями
|
|||
---|---|---|---|
#18+
Alex_Ustinov Проверяйте внимательно. START TRANSACTION на время транзакции неявно устанавливает autocommit=0 Проверьте тип таблицы, он должен быть транзакционным (InnoDB) фидл версия 5.5 но в 5.1 работает также https://dbfiddle.uk/?rdbms=mysql_5.5&fiddle=18b9ccf76f1711f28a6159f032321ea3 У меня везде стоит MYISAM, т.к. по умолчанию. Как изменить ? В таблицах уже лежат данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 02:47 |
|
Не получается управлять транзакциями
|
|||
---|---|---|---|
#18+
Я совсем запутался. Вот есть у меня 2 связанные через foreign key таблицы. Один-ко-многим. Запускаю транзакцию на вставку в мастер и детал. На мастере инжайн innodb, на детале myisam. Затем rollback. И что, из мастера удалит, а из детала - нет ? Но это же страх Господень !!! Нарушение целостности и все такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 02:55 |
|
Не получается управлять транзакциями
|
|||
---|---|---|---|
#18+
MsGuns, alter table ttt engine=InnoDB ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 03:02 |
|
Не получается управлять транзакциями
|
|||
---|---|---|---|
#18+
MsGuns, MySQL может пропустить "неправильное создание таблицы" при этом пропустит ошибочное утверждение FOREIGN KEY https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=eef1ef0d140b6ab0285e3c4f42d0fe79 обе таблицы должны быть InnoDB ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 03:19 |
|
Не получается управлять транзакциями
|
|||
---|---|---|---|
#18+
Спасибо за пояснения. Буду учиться ездить на машине с двумя рулями и задом наперед :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 03:28 |
|
Не получается управлять транзакциями
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
рестартануть сервер ил пора уже обновить сервер хотя бы до 5.7 с версии 5.5 по дефолту InnoDB ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 11:13 |
|
|
start [/forum/topic.php?fid=47&msg=40131843&tid=1827789]: |
0ms |
get settings: |
26ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
194ms |
get tp. blocked users: |
1ms |
others: | 2577ms |
total: | 2875ms |
0 / 0 |