Обнаружение заблокированных таблиц (заблокированный ТАБЛИЦЕЙ БЛОКИРОВКИ)

Основная проблема заключается в том, что вы открываете новый файл для каждой итерации цикла, перемещаете

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));

до цикла for

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));
for(Serializable s:invoiceDetailType.getContent()){
    if(s instanceof JAXBElement) {
        //... 
    }

   if( iit !=n ull){          
       csvWriter.writeNext(new String[]{iit.getHomeCurrency().getPrice().toString(), iit.getCentre().getIds()  ,invoiceHeaderType.getDate().toString(),invoiceHeaderType.getInvoiceType().value(),"\r\n"});
   }

и закрываете файл после цикла for

} //end for loop

 csvWriter.close();
51
задан Community 23 May 2017 в 02:17
поделиться

5 ответов

ПОКАЗАТЬ ОТКРЫТЫЕ ТАБЛИЦЫ , чтобы показать состояние каждой таблицы и ее блокировку.

Для именованных блокировок посмотрите Показать все текущие блокировки из get_lock

17
ответ дан 7 November 2019 в 09:50
поделиться

Вы можете использовать ПОКАЗАТЬ ОТКРЫТЫЕ ТАБЛИЦЫ , чтобы показать состояние блокировки каждой таблицы. Более подробная информация на странице документации команды здесь .

45
ответ дан 7 November 2019 в 09:50
поделиться

Следующий ответ был записан [1 111] Eric Leschinki в 2014/15 в [1 112] https://stackoverflow.com/a/26743484/1709587 (теперь удаленный):

Мини-пошаговая демонстрация о том, как обнаружить заблокированные таблицы:

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

Составляют Вашу таблицу, вставляют некоторые строки

create table penguins(spam int, ham int);
insert into penguins(spam, ham) values (3, 4);

шоу открытые таблицы:

show open tables like "penguins"

печать:

your_database penguins    0   0

Пингвины не заблокированы, позволяет, блокируют его:

LOCK TABLES penguins READ;

Проверка, если это заблокировано:

show open tables like "penguins"

Печать:

your_database, penguins 1, 0

Ага! Это заблокировано! Позволяет разблокировали его:

unlock tables

Теперь это разблокировано:

show open tables like "penguins"

Печать:

your_database penguins    0   0

шоу все текущие блокировки

show open tables where in_use <> 0

было бы намного более полезно, если разработчики MySQL помещают эту информацию в постоянный столик (таким образом, я могу сделать select my_items from my_table where my_clauses), а не это разделило вниз 'выставочный синтаксис' таблицы от системных переменных.

0
ответ дан 7 November 2019 в 09:50
поделиться

В этой статье описано, как получить информацию о заблокированных ресурсах MySQL. mysqladmin debug также может быть полезен.

2
ответ дан 7 November 2019 в 09:50
поделиться

Вы можете создать свою собственную блокировку с помощью GET_LOCK (lockName, timeOut)

Если вы выполните GET_LOCK (lockName, 0) с тайм-аутом 0 перед блокировкой таблиц, а затем выполните это с помощью a RELEASE_LOCK (lockName) , тогда все другие потоки, выполняющие GET_LOCK () , получат значение 0, которое сообщит им, что блокировка удерживается другим потоком.

Однако это не сработает, если у вас не все потоки вызывают GET_LOCK () перед блокировкой таблиц. Документация по блокировке таблиц находится здесь

Надеюсь, это поможет!

4
ответ дан 7 November 2019 в 09:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: