SQL Update зависает Java-программа - PullRequest
1 голос
/ 16 февраля 2010

Я пишу комбинированную программу на Java / Perl, которая анализирует XML-файлы в базе данных Oracle SQL. В базе данных есть две таблицы: одна содержит данные из файлов XML, а другая содержит информацию о самих файлах (имя файла, время создания и т. Д.). По сути, когда появляется новый XML-файл, Java-программа проверяет, был ли он уже проанализирован или частично проанализирован. Если это так, он меняет столбец STATUS в таблице filestatus с «хорошо» на «плохо» для этого идентификатора файла, используя UPDATE FILESTATUS SET STATUS='bad' WHERE ID=?. Однако, когда я запускаю его, он застревает при этом. Есть идеи, почему это могло произойти? Никаких сообщений об ошибках не происходит, просто зависает. Код ниже.

static void markDataBad(String docID)
    {
        try
        {
            String update = "UPDATE FILESTATUS SET STATUS='bad' WHERE ID=?";
            PreparedStatement updateStatus = Main.con.prepareStatement(update);
            updateStatus.setString(1, docID);
            updateStatus.execute();
        }
        catch (Exception ex) {ex.printStackTrace();}
    }

Я уже пытался изменить updateStatus.execute() на updateStatus.executeQuery() и updateStatus.executeUpdate(), но, похоже, ничего не изменилось.

Заранее спасибо!

Ответы [ 2 ]

10 голосов
/ 16 февраля 2010

Есть ли у вас незафиксированные изменения в этой таблице где-то еще? У меня была эта проблема сегодня, потому что я внес некоторые изменения в таблицу в SQL * Developer, и она удерживала блокировку таблицы, пока я не зафиксировал ее.

0 голосов
/ 16 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...