|
|
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
я наверное чего-то не понимаю. Мне нужно чтобы несколько операции сработали только когда все успешно прошли к примеру Вставка 1 Вставка 2 Изменение таблицы 1 Обновление 2 Я хочу чтобы если к примеру Обновление 2 не произошло ,например из-за ошибки , все откатилось назад, т.е. отменилось всё включая Вставку 1. Я делаю так START TRANSACTION; Вставка 1 Вставка 2 Изменение таблицы 1 Обновление 2 COMMIT; но не работает, всё равно вставки проходят ,когда ошибка в обновлении 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:49:39 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Новичек82,У всех таблиц Innodb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:52:21 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Новичек82 всё равно вставки проходят ,когда ошибка в обновлении 2 А после "ошибки в обновлении 2" вы делаете commit или rollback ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:54:35 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
miksoft, Я хочу чтобы было автоматом, что если всё прошно нормально закоммитилось, если ошибка то откатилось. у меня просто sql файлик, который запускается на разных машинах и конечно поведение не известно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:56:25 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Новичек82, Вообще, должно откатываться. Показывайте конкретный скрипт и как его запускаете. Если конкретный скрипт слишком большой или секретный, то показывайте тестовый, на котором проблема воспроизводится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 17:06:46 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
miksoftНовичек82, Вообще, должно откатываться. Показывайте конкретный скрипт и как его запускаете. Если конкретный скрипт слишком большой или секретный, то показывайте тестовый, на котором проблема воспроизводится. ну вообще-то не должно, откатится один оператор где была ошибка (или не выполнится), чтобы откатилась все, нужно проверять ошибки и открывать транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 08:01:41 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#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:34 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
авторК сожалению, не найду в доке описания поведения mysql при прекращении выполнении скрипта из-за ошибки. Есть только один частный случай при обрыве коннекта. скрипт ничем не отличается от всего остального. как напишешь так и работает. напишешь откат - откатит, не напишешь - не откатит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:06:22 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторК сожалению, не найду в доке описания поведения mysql при прекращении выполнении скрипта из-за ошибки. Есть только один частный случай при обрыве коннекта. скрипт ничем не отличается от всего остального. как напишешь так и работает. напишешь откат - откатит, не напишешь - не откатит.Обычно предполагается наоборот. Напишешь коммит - закоммитит. Не напишешь - не закоммитит. Имхо, коммит, как потенциально более опасное действие, должен быть либо явным, либо почти явным (DDL и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:13:55 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
авторК сожалению, не найду в доке описания поведения mysql при прекращении выполнении скрипта из-за ошибки http://dev.mysql.com/doc/refman/5.7/en/innodb-error-handling.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:13:58 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
авторОбычно предполагается наоборот. Напишешь коммит - закоммитит. Не напишешь - не закоммитит. эм? мы точно ро MYSQL говорим? у него по умолчанию автокоммит включен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 11:15:03 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#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:10 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#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:55 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39147086&tid=1832277]: |
0ms |
get settings: |
15ms |
get forum list: |
21ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
41ms |
get topic data: |
16ms |
get forum data: |
5ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 434ms |

| 0 / 0 |
