Должен ли я управлять разблокировкой таблицы в случае ошибки в php (try / catch)? Или блокировка автоматически снимается объектом PDO до конца скрипта?
Да. Если вы не используете постоянное соединение, по завершении сценариев PDO закроет соединение, а mysql, в свою очередь, снимет все блокировки:
PHP автоматически закроет соединение, когда ваш скрипт закончится.
http://php.net/manual/en/pdo.connections.phpЕсли соединение для сеанса клиента прерывается, как обычно, так и ненормально, сервер неявно освобождает все блокировки таблиц, удерживаемые сеансом (транзакционные и нетранзакционные).
https://dev.mysql.com/doc/refman/5.1/en/lock-tables.html
Других решений пока нет …