2013-01-25 15 views
9

Mam internetową aplikację na Androida, która używa WebSQL do przechowywania. Z jakiegoś powodu wywołanie openDatabase w jednym punkcie (w odpowiedzi na kliknięcie przycisku) powoduje wyświetlenie DOMException z komunikatem "SECURITY_ERR: DOM Exception 18".SECURITY_ERR: DOM Exception 18 on openDatabase

Pamiętaj, że nie używam PhoneGap.

Główne pytanie, które tutaj zadam, to: Jakie są możliwe przyczyny wyjątku DOMException 18 na openDatabase?

Jeszcze więcej szczegółów: Ten wyjątek występuje tylko wtedy, gdy baza danych jeszcze nie istnieje. Jeśli już istnieje, działa zgodnie z oczekiwaniami. Funkcja wywołująca połączenie openDatabase jest używana w innej części aplikacji i działa dobrze.

Co Próbowałem tak daleko:

  • Zmniejszenie rozmiaru bazy danych - nie powinno być problemem, ponieważ jest tworzony przez inną część aplikacji.
  • Sprawdziłem uprawnienia do zewnętrznego magazynu - znowu nie powinno to być problemem.
  • Czytałem gdzieś, że kabel USB podłączony może spowodować ten problem - nie to, co jest przyczyną w tym przypadku.

EDIT: To właśnie polecenie wygląda następująco:

db = openDatabase('my_database', '1.0', 'My database description', 5*1024*1024, function() {}); 
+0

czy problem został rozwiązany ... mam do czynienia z tym samym problemem ... – Aravin

+1

Nigdy nie dowiedziałem się, co było przyczyną. Ostatecznie stwierdziłem, że stabilność WebSQL jest zbyt niespójna na różnych urządzeniach/wersjach Androida dla moich potrzeb, dlatego napisałem natywny interfejs, który okazał się znacznie lepszy. Chociaż nie potrzebuję już odpowiedzi na to pytanie, nadal byłbym zainteresowany wysłuchaniem jednego z uwagi na ciekawość. – Goldsmith

+0

Rozwiązałem ten problem. Nazywam się otwartą bazą danych wewnątrz funkcji gotowości urządzenia .... – Aravin

Odpowiedz

1

Według spec the spec to spowodować jedynie dwa

  • agenta użytkownika może podnieść wyjątek SECURITY_ERR zamiast zwracania obiektu bazy danych, jeśli żądanie narusza decyzję strategiczną (np. jeśli agent użytkownika jest conf igured, aby nie zezwalać stronie na otwieranie baz danych).

  • Jeśli pochodzenie nie jest krotką schemat/host/port, a następnie rzucać wyjątek SECURITY_ERR

+0

Obie rozmowy mają to samo pochodzenie, a agent użytkownika jest konfigurowany przed załadowaniem strony. – Goldsmith

+0

Powinno być coś.Mogę dowiedzieć się tylko, jeśli pokazujesz swój kod –

2

znalazłem, że ma do czynienia z dozwolonego rozmiaru bazy danych. Jeśli spróbujesz otworzyć bazę danych większą niż 50 MB na iOS, pojawi się ten błąd.

+0

Chociaż nie byłbym zaskoczony, gdyby opendatabase powodował dokładnie ten sam błąd, jeśli przekroczysz limit rozmiaru, tak nie jest w tym przypadku. Tak jak powiedziałem, został pomyślnie utworzony w innej części aplikacji. Ponadto ustawiłem limit na 5 MB. – Goldsmith

Powiązane problemy