❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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
* LO-Experte *
Beiträge: 837
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 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2888
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
* LO-Experte *
Beiträge: 837
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) 3688 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 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 837
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 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2888
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
* LO-Experte *
Beiträge: 3060
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 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

Freischreiber
* LO-Experte *
Beiträge: 837
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 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2888
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
* LO-Experte *
Beiträge: 837
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 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten