powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не получается управлять транзакциями
8 сообщений из 8, страница 1 из 1
Не получается управлять транзакциями
    #40131805
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, форумчане !
Есть скрипт:
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
...
Рейтинг: 0 / 0
Не получается управлять транзакциями
    #40131831
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяйте внимательно.
START TRANSACTION на время транзакции неявно устанавливает autocommit=0
Проверьте тип таблицы, он должен быть транзакционным (InnoDB)
фидл версия 5.5 но в 5.1 работает также
https://dbfiddle.uk/?rdbms=mysql_5.5&fiddle=18b9ccf76f1711f28a6159f032321ea3
...
Рейтинг: 0 / 0
Не получается управлять транзакциями
    #40131838
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov
Проверяйте внимательно.
START TRANSACTION на время транзакции неявно устанавливает autocommit=0
Проверьте тип таблицы, он должен быть транзакционным (InnoDB)
фидл версия 5.5 но в 5.1 работает также
https://dbfiddle.uk/?rdbms=mysql_5.5&fiddle=18b9ccf76f1711f28a6159f032321ea3


У меня везде стоит MYISAM, т.к. по умолчанию.
Как изменить ? В таблицах уже лежат данные.
...
Рейтинг: 0 / 0
Не получается управлять транзакциями
    #40131839
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я совсем запутался.
Вот есть у меня 2 связанные через foreign key таблицы. Один-ко-многим.
Запускаю транзакцию на вставку в мастер и детал. На мастере инжайн innodb, на детале myisam.
Затем rollback. И что, из мастера удалит, а из детала - нет ? Но это же страх Господень !!!
Нарушение целостности и все такое.
...
Рейтинг: 0 / 0
Не получается управлять транзакциями
    #40131840
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

alter table ttt engine=InnoDB
...
Рейтинг: 0 / 0
Не получается управлять транзакциями
    #40131842
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

MySQL может пропустить "неправильное создание таблицы" при этом пропустит ошибочное утверждение FOREIGN KEY
https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=eef1ef0d140b6ab0285e3c4f42d0fe79
обе таблицы должны быть InnoDB
...
Рейтинг: 0 / 0
Не получается управлять транзакциями
    #40131843
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за пояснения. Буду учиться ездить на машине с двумя рулями и задом наперед :)
...
Рейтинг: 0 / 0
Не получается управлять транзакциями
    #40131860
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
// стоит MYISAM, т.к. по умолчанию.
// Как изменить ? 

// в конфиг. файл my.ini добавить в секцию 
[mysqld]
default_storage_engine = InnoDB;


рестартануть сервер

ил пора уже обновить сервер хотя бы до 5.7
с версии 5.5 по дефолту InnoDB
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не получается управлять транзакциями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]