BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

(gelöst) Index löschen bei gesplitteter HSQL-Datenbank?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

(gelöst) Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von Freischreiber » Di 15. Aug 2017, 09:58

Hallo,

weiß jemand, wie man überflüssige Indizes aus einer gesplitteten HSQL-Datenbank entfernen kann?

In der Base-Tabellenbearbeitung werden die Indizes zwar angezeigt, aber ich kann sie nicht löschen. Es kommt immer die Fehlermeldung
unexpected token: ON
.

Auch manche Versuche, einen neuen Index anzulegen, scheitern. Beispiel:
object name already exists: Index1 in statement [CREATE INDEX "Index1" ON "t-adressen" ( "Erfasszeit" ASC)]
Das, obwohl noch gar kein Index1 angezeigt wird in der Übersicht.

Gruß
Freischreiber
Zuletzt geändert von Freischreiber am Mi 16. Aug 2017, 10:28, insgesamt 1-mal geändert.
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von RobertG » Di 15. Aug 2017, 10:53

Hallo Freischreiber,

sobald Du einen Primärschlüssel für eine Tabelle definierst erstellst Du einen Index. Lass einmal

Code: Alles auswählen

SELECT "INDEX_NAME" FROM "INFORMATION_SCHEMA"."SYSTEM_INDEXINFO"
ablaufen. Funktioniert zumindest bei der internen HSQLDB 1.8 so.

Mit

Code: Alles auswählen

DROP INDEX <index> [IF EXISTS];
kannst Du (hoffentlich) einen Index entfernen, von dem Du den Namen weißt - vorausgesetzt, der Index wird nicht irgendwo für irgendwelche Beziehungen gesperrt.

Vielleicht kann die Indizierung über die GUI tatsächlich nur ordnungsgemäß mit der internen Datenbank HSQLDB 1.8 zusammen arbeiten. Mit

Code: Alles auswählen

CREATE [UNIQUE] INDEX <index> ON <table> (<column> [DESC] [, ...]) [DESC];
müsste ein Index dort erstellt werden.

Das gilt so auch wohl für die aktuelle HSQLDB. Schau einmal hier: http://hsqldb.org/doc/2.0/guide/databas ... chapt.html

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von Freischreiber » Di 15. Aug 2017, 11:21

Hallo Robert,

hab vorhin vergessen, den Screenshot hochzuladen:
hsql-index-löschen-fehlermeldung.png
hsql-index-löschen-fehlermeldung.png (9.86 KiB) 3141 mal betrachtet

Mit

Code: Alles auswählen

DROP INDEX PUBLIC.Vorname IF EXISTS; 
kommt zwar ein "Befehl erfolgreich ausgeführt", aber der Index bleibt. Schon seltsam, das scheint von Base aus nicht zu gehen.

Kann es sein, daß ein Index wie "Vorname" für eine Beziehung gesperrt ist, obwohl zu dem Feld gar keine Beziehungen bestehen, sondern nur zur ID dieser Adresstabelle?

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von Freischreiber » Di 15. Aug 2017, 11:30

Ich verstehe schon diese Syntax nicht ganz:
DROP INDEX
drop index statement
<drop index statement> ::= DROP INDEX [ IF EXISTS ] <index name> [ IF EXISTS ]
Destroy an index.
IF EXISTS führt dazu, daß ich keine Fehlermeldung bekomme, wenn der Name falsch ist. Wenn ich es weglasse, bekomme ich
user lacks privilege or object not found: VORNAME in statement [DROP INDEX PUBLIC.Vorname]
,
obwohl der Name angezeigt wurde nach der von dir beschriebenen Select-Anweisung.

Mit oder ohne PUBLIC dieselbe Fehlermeldung. Seltsam

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von RobertG » Di 15. Aug 2017, 12:16

Hallo Freischreiber,
user lacks privilege or object not found: VORNAME in statement [DROP INDEX PUBLIC.Vorname]
zeigt für mich, dass in SQL der "Vorname" zu VORNAME wird.

Code: Alles auswählen

DROP INDEX PUBLIC."Vorname"
... hilft vielleicht.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von Pit Zyclade » Di 15. Aug 2017, 12:22

Bin nur Laie, aber m.W. muß man beim Index-löschen per GUI erst einen neuen anlegen, bevor man gut löschen kann.
Experimentell geht folgendes: Tabelle kopieren und einfügen mit neuem Namen. Da wird man gefragt, ob man einen neuen Index anlegen will. Hernach kann man diese neue Tabelle bearbeiten und den alten Index löschen. Man merkt auch, dass der neue Schlüssel, egal wie man ihn benennt, auch "Vorname" ist möglich, integer ist.
Ein bereits vorgefundener "Index" namens "Vorname" läßt vermuten, dass der nie integer oder tinyinteger war...
(Hoffentlich nicht zu ungebildeter Beitrag)
Gruß
Pit
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von Freischreiber » Di 15. Aug 2017, 14:49

Hallo Robert,

Danke, JETZT verstehe ich: die Anführungszeichen braucht es, damit im Kommando aus der kombinierten Groß-/Kleinschreibung keine reinen Großbuchstaben werden - die in der DB nicht vorkommen. Es klappt mit Anführungszeichen! Und für den zweiten Vornamenindex offenbar tatsächlich
DROP INDEX PUBLIC."PUBLIC.Vorname"
In der GUI sehen kann man es wie üblich erst nach einem Neustart von Base.

:?: Kann ich davon ausgehen, daß die von der Datenbank selbst angelegten Indizes alle "...SYS_IDX_SYS_PK..." etc heißen? Und somit sinnvoll sind? Und ich die handangelegten und -getauften Indizes lieber lösche? Davon habe ich nämlich einige.

Hallo Pit,

das Kopieren der Tabelle wollte ich unbedingt vermeiden. Das ist bei einer gesplitteten DB nämlich auch ein ziemlicher Act: Kopieren, Beziehungen raus, Löschen, Beziehungen an die neue Tabelle ran, und dazwischen diverse Neustarts. So ist es mir wesentlich lieber.

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von RobertG » Di 15. Aug 2017, 16:12

Hallo Freischreiber,

die von der Datenbank angelegten Indices enthalten die Primärschlüssel und die Verbindungen von einer Tabelle zur anderen (Primärschlüssel > Fremdschlüssel). Die lass ruhig da stehen, wenn Du nicht größere Probleme bekommen willst.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Index löschen bei gesplitteter HSQL-Datenbank?

Beitrag von Freischreiber » Mi 16. Aug 2017, 10:28

Hallo Robert,

alles klar. So, die Aktion war nötig, da ich auf manchen Spalten mehrere gleiche Indizes hatte.
Vielen Dank!

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten