2012-07-25 21 views
8

Ben (tıpkı test için) bu basit Tablo vardır: H2 veritabanında auto_increment alanı 32 ile artırılıyor?

create table table 
(
key int not null primary key auto_increment, 
name varchar(30) 
); 

Sonra aşağıdaki istemleri yerine

: Her şey yolunda bu aşamada

insert into table values (null , 'one');// key=1 
insert into table values (null , 'two');// key=2 

, o zaman ben H2 Konsolu kapatıp yeniden açmak ve bu isteğini yeniden yürütün:

01: Nihayet

insert into table values (null , 'three');// key=33 

, burada tüm sonuçlar iseenter image description here Bunun gerçek bir sorun ... yazar bir yanıt bekleyen ise, bu sorunu çözmek için nasıl bilmiyorum

...

+0

Ekran görüntüsünde hangi yazılımı kullanıyorsunuz? –

+0

Paul: camtasia stüdyosu. –

+0

Üzgünüm! Veritabanı kaşifi demek istiyorum. :-) –

cevap

11
veritabanı a cache of 32 entries for sequences kullanır

ve otomatik artış içten olduğunu

bir dizi uyguladı. Sistem veritabanını kapatmadan çökerse, en fazla sayıda sayı kaybolur. Bu, sekansların diğer veritabanlarında nasıl çalıştığına benzer. Bu gibi durumlarda aralıksız olarak sekans değerlerinin üretilmesi garanti edilmez.

Veritabanını gerçekten kapattınız mı? Yapmamalısınız - eğer teknik olarak sorun değil, ancak veritabanını kapatmak böyle garip şeyler olmayacak. Normalde veritabanını kapatırsam (H2 Console aracını durdurursanız) sorunu yeniden oluşturamıyorum. Tüm bağlantıları kapatmak veritabanını kapatır ve uygulama normal olarak durdurulursa veritabanı kapanır (bir kapatma kancası kullanarak).

Bu arada, tam veritabanı URL'niz nedir? jdbc:h2:tcp://... kullanıyorsunuz, ancak geri kalanını göremiyorum.

+0

Merhaba Thomas, Bu URL'yi kullanıyorum: jdbc: h2: tcp: // localhost/~/autoin ... Mesajımda Sadece H2 Console aracıyla oynuyordum (çünkü yazılımımdaki bir hata oldu ama ben sorunu keşfettiğimde şaşırmıştım. JP veritabanı değil, JPA), "Normalde veritabanını kapatırsam (H2 Console aracını durdurursam) sorunu yeniden oluşturamıyorum" Tamam bir video kaydettim Konsolu kapattığım ama hala sorun devam ederse, bkz: http://www.youtube.com/watch?v=pGuDjgbTr7o&feature=youtu.be –

+0

Bir video hata raporu, güzel :-) Konsol penceresini kapattığınızda ' h2 - Raccourci '0: 53'te (sanırım bu sunucu ve H2 Console aracıydı ama emin değilim), sanırım süreci' öldürdü 've veritabanı normalde kendini kapatma şansı yoktu (kapanma kancası yok çağrıldı, bağlantı normal olarak kapatılmadı). Bu teknik bir sorun değilse –

+0

bu sorunu çözmek için bir şans var mı? Bu aşamada sıkışıp kaldım ve zaman tükeniyor ... –

0

Terminali kapatmayın. Terminal, h2-tcp sunucusunun ana işlemidir. Onlar ayrılmamışlar. Terminali kapattığınızda, süreç tüm çocuk süreçlerini kapatır, ne demektir acil durum sunucusu kapatılır

İlgili konular