Как прервать запрос

konst55
Дата: 22.12.2012 14:52:02
Пишу программу для linux, работает с mysql через MySQL Connector/C++. Нужно обрабатывать сигналы SIGINT и SIGTSTP (ctrl+C и ctrl+Z). По нажатию этих клавиш юзером прога должна прекратить текущий запрос сделать rollback и завершиться
netwind
Дата: 22.12.2012 15:00:04
konst55, никак. стандартный консольный клиент при получении ctrl-c делает еще один реконнект с теми же параметрами и убивает свой же запрос
tanglir
Дата: 22.12.2012 15:40:58
konst55
программу для linux, работает с mysql через MySQL Connector/C++

netwind, при чём тут "стандартный консольный клиент"?
konst55
Дата: 22.12.2012 16:45:48
netwind,

а как же сделать роллбэк в этом случае? если просто грохнуть прогу, то при следующем запуске работать не будет - будет ждать конца транзакции не завершенной при предыдущем запуске, приходится рестартовать сервер
javajdbc
Дата: 22.12.2012 17:39:35
konst55
netwind,

а как же сделать роллбэк в этом случае? если просто грохнуть прогу, то при следующем запуске работать не будет - будет ждать конца транзакции не завершенной при предыдущем запуске, приходится рестартовать сервер


http://dev.mysql.com/doc/refman/5.0/en/kill.html

надо иметь какие-то сильные права чтоб убить самого себя
KILL [CONNECTION | QUERY] thread_id

или из шела:
mysqladmin processlist, mysqladmin kill
netwind
Дата: 22.12.2012 18:07:04
tanglir
konst55
программу для linux, работает с mysql через MySQL Connector/C++

netwind, при чём тут "стандартный консольный клиент"?

в нем эта возможность реализована.
netwind
Дата: 22.12.2012 18:08:09
konst55
netwind,

а как же сделать роллбэк в этом случае? если просто грохнуть прогу, то при следующем запуске работать не будет - будет ждать конца транзакции не завершенной при предыдущем запуске, приходится рестартовать сервер

нет, тут придется рестартовать зарплату в другом месте.