Основная проблема заключается в том, что вы открываете новый файл для каждой итерации цикла, перемещаете
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();
ПОКАЗАТЬ ОТКРЫТЫЕ ТАБЛИЦЫ
, чтобы показать состояние каждой таблицы и ее блокировку.
Для именованных блокировок посмотрите Показать все текущие блокировки из get_lock
Вы можете использовать ПОКАЗАТЬ ОТКРЫТЫЕ ТАБЛИЦЫ
, чтобы показать состояние блокировки каждой таблицы. Более подробная информация на странице документации команды здесь .
Следующий ответ был записан [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
), а не это разделило вниз 'выставочный синтаксис' таблицы от системных переменных.
В этой статье описано, как получить информацию о заблокированных ресурсах MySQL. mysqladmin debug
также может быть полезен.
Вы можете создать свою собственную блокировку с помощью GET_LOCK (lockName, timeOut)
Если вы выполните GET_LOCK (lockName, 0)
с тайм-аутом 0 перед блокировкой таблиц, а затем выполните это с помощью a RELEASE_LOCK (lockName)
, тогда все другие потоки, выполняющие GET_LOCK ()
, получат значение 0, которое сообщит им, что блокировка удерживается другим потоком.
Однако это не сработает, если у вас не все потоки вызывают GET_LOCK ()
перед блокировкой таблиц. Документация по блокировке таблиц находится здесь
Надеюсь, это поможет!