|
|
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
я наверное чего-то не понимаю. Мне нужно чтобы несколько операции сработали только когда все успешно прошли к примеру Вставка 1 Вставка 2 Изменение таблицы 1 Обновление 2 Я хочу чтобы если к примеру Обновление 2 не произошло ,например из-за ошибки , все откатилось назад, т.е. отменилось всё включая Вставку 1. Я делаю так START TRANSACTION; Вставка 1 Вставка 2 Изменение таблицы 1 Обновление 2 COMMIT; но не работает, всё равно вставки проходят ,когда ошибка в обновлении 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:49 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Новичек82,У всех таблиц Innodb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:52 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Новичек82 всё равно вставки проходят ,когда ошибка в обновлении 2 А после "ошибки в обновлении 2" вы делаете commit или rollback ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:54 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
miksoft, Я хочу чтобы было автоматом, что если всё прошно нормально закоммитилось, если ошибка то откатилось. у меня просто sql файлик, который запускается на разных машинах и конечно поведение не известно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:56 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Новичек82, Вообще, должно откатываться. Показывайте конкретный скрипт и как его запускаете. Если конкретный скрипт слишком большой или секретный, то показывайте тестовый, на котором проблема воспроизводится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 17:06 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
miksoftНовичек82, Вообще, должно откатываться. Показывайте конкретный скрипт и как его запускаете. Если конкретный скрипт слишком большой или секретный, то показывайте тестовый, на котором проблема воспроизводится. ну вообще-то не должно, откатится один оператор где была ошибка (или не выполнится), чтобы откатилась все, нужно проверять ошибки и открывать транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 08:01 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZivну вообще-то не должно http://dev.mysql.com/doc/refman/5.5/en/batch-mode.html If you want the script to continue even if some of the statements in it produce errors, you should use the --force command-line option.Поскольку топикстартер не показывает что и как он запускает, то, полагаю, что такой ключ не был указан. К сожалению, не найду в доке описания поведения mysql при прекращении выполнении скрипта из-за ошибки. Есть только один частный случай при обрыве коннекта. http://dev.mysql.com/doc/refman/5.5/en/mysql-tips.html Also, any current transaction rolls back. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 09:58 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
авторК сожалению, не найду в доке описания поведения mysql при прекращении выполнении скрипта из-за ошибки. Есть только один частный случай при обрыве коннекта. скрипт ничем не отличается от всего остального. как напишешь так и работает. напишешь откат - откатит, не напишешь - не откатит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:06 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторК сожалению, не найду в доке описания поведения mysql при прекращении выполнении скрипта из-за ошибки. Есть только один частный случай при обрыве коннекта. скрипт ничем не отличается от всего остального. как напишешь так и работает. напишешь откат - откатит, не напишешь - не откатит.Обычно предполагается наоборот. Напишешь коммит - закоммитит. Не напишешь - не закоммитит. Имхо, коммит, как потенциально более опасное действие, должен быть либо явным, либо почти явным (DDL и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:13 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
авторК сожалению, не найду в доке описания поведения mysql при прекращении выполнении скрипта из-за ошибки http://dev.mysql.com/doc/refman/5.7/en/innodb-error-handling.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:13 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
авторОбычно предполагается наоборот. Напишешь коммит - закоммитит. Не напишешь - не закоммитит. эм? мы точно ро MYSQL говорим? у него по умолчанию автокоммит включен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:15 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторОбычно предполагается наоборот. Напишешь коммит - закоммитит. Не напишешь - не закоммитит.эм? мы точно ро MYSQL говорим? у него по умолчанию автокоммит включен.Явное начало транзакции командой START TRANSACTION выключает автокоммит. Кроме того: http://dev.mysql.com/doc/refman/5.7/en/innodb-implicit-commit.html If a session that has autocommit disabled ends without explicitly committing the final transaction, MySQL rolls back that transaction. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:21 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
странная фигня, но проверять влом. если совсем хочется можно через ErrorHandler делать. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:24 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1832277]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 435ms |

| 0 / 0 |
