Mike: PHPmyAdmin für sqlite

Hi,

ich habe nun schon einige Admintools für Sqlite ausprobiert, alle haben irgendwelche Macken. Es sei denn ich mache etwas falsch.

create table z (
id integer primary key,
a varchar,
b varchar,UNIQUE(b)
);

Das sollte doch eigentlich richtig sein(?), funktionieren tut es auch. Aber die Tools kommen nicht zurecht damit, wenn ich so eine Struktur habe und will dort einen Eintrag editieren, bekomme ich ein extra Feld was im besten Fall dann UNIQUE heisst.

Ein anderes Ding ist das Autoincrement Feld. Aber wohl eher ein Problem von Sqlite, denn wenn ich bei der Erstellung, wie empfohlen, zu dem INTEGER auch noch, wie bei MYSQL gewohnt, eine Zahl eingeben also INTEGER(9) eingebe, dann wird das nix mit Autoincrement.

Aber die Tools kommen auch nicht damit zurecht wenn ich es angelegt habe und dann einen Eintrag reinschreiben will, dann akzeptieren die kein leeres InputFeld, also beim PK, oder was noch schlimmer ist die akzeptieren es und machen NULL(trotz NOT NULL) darein, was natürlich nur einmal geht weil ja sowieso UNIQUE.

Also zurück zu Ausgangsfrage, kennt jemand von euch ein gutes Tool auf PHP-BASIS, das nicht so versagt?

Bereits getestet:

WizSQLiteAdmin 0.5.2
phpSQLiteAdmin 0.2 (05.03.2004)
phpSQLiteAdmin 0.3-alpha1

...und andere, deren Name ich nicht mal mehr weiss, aber mich bestimmt erinnere wenn sie jemand nennt.

Mike

  1. Hallo,

    Also zurück zu Ausgangsfrage, kennt jemand von euch ein gutes Tool auf PHP-BASIS, das nicht so versagt?

    PHP, unterstützt SQLite 2 und 3:
    http://www.sqlitemanager.org/

    Firefox-Add-On, SQLite 3:
    https://addons.mozilla.org/en-US/firefox/addon/5817

    Ale×

    1. Hi,

      »» Also zurück zu Ausgangsfrage, kennt jemand von euch ein gutes Tool auf PHP-BASIS, das nicht so versagt?

      PHP, unterstützt SQLite 2 und 3:
      http://www.sqlitemanager.org/

      Das habe ich tatsächlich mal vor Jahren ausprobiert, und seitdem hat sich dort auch nichts mehr getan. Da ich mich aber nicht erinnere, was die Probleme damit waren und du es ausdrücklich empfiehlst, wollte ich es nun nochmals testen. Ohne deine Empfehlung allerdings wäre ich schnell  von der Seite verschwunden, irgendwelche Scripte die ein vernuünftiges Anzeigen im IE unmöglich machen, ewiges Warten alles nur französisch...

      Na gut aber dann habe ich es eben mit FF geschafft die Datei runterzuladen, da gabs dann auch prompt beim Entpacken kleine Fehler, hinzu unsinniger Ballast, in der Datei und den Spawn Editor....

      Alles in allem nicht gerade vertrauenserweckend. Aber was solls, getestet und siehe da, die gleiche Problematiken wie bei den Anderen. Also wieder ab in den Muell damit.

      Firefox-Add-On, SQLite 3:
      https://addons.mozilla.org/en-US/firefox/addon/5817

      Ja ganz gut leider aber nicht webbasierend.

      Trotzdem danke für die Mühe
      Mike

      1. »» Firefox-Add-On, SQLite 3:
        »» https://addons.mozilla.org/en-US/firefox/addon/5817

        Ja ganz gut leider aber nicht webbasierend.

        Ich habe ihn nun doch mal aus Neugierde ausprobiert. Aber nicht mal das Teil, obwohl so beliebt, kommt mit den einfachsten Sachen zurecht.

        CREATE  TABLE  IF NOT EXISTS "main"."t1" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "a" VARCHAR, "b" VARCHAR, "c" TEXT)

        Was ist daran falsch? Es gibt keine AUTOINCREMENT Bezeichnung in Sqlite, nur weil Viele das meinen, hatte ich am Anfang meine grösste Mühe das zu verstehen. Und warum der das ""main"."t1"" macht verstehe ich auch nicht Tabellenname sollte t1 sein.

        Dann sehe ich nirgendwo, vielleicht irre ich mich auch, eine Möglichkeit ein Feld auf UNIQUE zu setzen. Da kann ich ja gleich wieder meine eigenen Querys setzen.

        Hätte ich nicht erwartet, dachte das Teil muss gut sein.

        Mike

        1. Hallo Mike,

          » »» Firefox-Add-On, SQLite 3:
          » »» https://addons.mozilla.org/en-US/firefox/addon/5817
          Ich habe ihn nun doch mal aus Neugierde ausprobiert. Aber nicht mal das Teil, obwohl so beliebt, kommt mit den einfachsten Sachen zurecht.

          wie wäre es mit einer Fehlerbeschreibung?

          CREATE  TABLE  IF NOT EXISTS "main"."t1" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "a" VARCHAR, "b" VARCHAR, "c" TEXT)

          Was ist daran falsch?

          wird ausgeführt, es gibt keine Fehlermeldung. Wo ist das Problem?

          Und warum der das ""main"."t1"" macht verstehe ich auch nicht Tabellenname sollte t1 sein.

          Was verstehst Du hieran genau nicht? Das doppelte Anführungszeichen sind ANSI-gerechte Quotes, d.h. damit werden Bezeichner gequotet - so wie in MySQL standardmäßig mit dem Backtick oder in MS SQL-Server mit eckigen Klammern. Auch in MySQL und im MS SQL-Server kann man ANSI-Quotes einschalten.

          Ist Dir die Schreibweise

          datenbankname.tabellenname

          noch nicht über den Weg gelaufen?

          Dann sehe ich nirgendwo, vielleicht irre ich mich auch, eine Möglichkeit ein Feld auf UNIQUE zu setzen.

          Du irrst. Du kannst in der Spaltendefinition den entsprechenden Spaltenconstraint setzen, wie Dir das sehr nützliche Syntaxdiagramm der Spaltendefiniton, das Dir bereits verlinkt wurde, zeigt. Schaust Du Dir die Definition von column-constraint und conflict-clause an, so siehst Du, dass Du im einfachsten Fall einfach nur ein UNIQUE anhängen musst:

          b VARCHAR(20) UNIQUE

          Hätte ich nicht erwartet, dachte das Teil muss gut sein.

          ich finde dieses Werkzeug top und benutze es gern. Welche Probleme hast Du mit den von Dir getesteten Werkzeugen wirklich? Ich konnte noch keines nachvollziehen.

          Freundliche Grüße

          Vinzenz

          1. Hi,

            wie wäre es mit einer Fehlerbeschreibung?

            Du fragst nach einer Fehlerbeschreibung aber zitierst gleichzeitig nachfolgend die gennenten Probleme? Das verstehe ich nicht.

            »» CREATE  TABLE  IF NOT EXISTS "main"."t1" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "a" VARCHAR, "b" VARCHAR, "c" TEXT)

            »» Was ist daran falsch?

            wird ausgeführt, es gibt keine Fehlermeldung. Wo ist das Problem?

            Warum zitierst du jetzt nicht was ich bereits dazu geschrieben hatte? Während hier bei jedem noch so kleinen HTML-Semantik-Problem gemeckert wird, meinst du wenn ein SQL-Query fehlerhaft ist, geht das in Ordnung, weil funktioniert ja?

            »» Und warum der das ""main"."t1"" macht verstehe ich auch nicht Tabellenname sollte t1 sein.

            Was verstehst Du hieran genau nicht? Das doppelte Anführungszeichen sind ANSI-gerechte Quotes, d.h. damit werden Bezeichner gequotet - ....»»

            Ist Dir die Schreibweise

            datenbankname.tabellenname

            noch nicht über den Weg gelaufen?

            Auch hier lässt du meine Begründung weg. Es geht nicht um die Quotes, sondern darum das meine DB gar nicht MAIN heisst. Warum er dann, wenn er schon nicht nur meinen Tabellennamen alleine nimmt, das noch dazu macht ist fraglich.

            »» Dann sehe ich nirgendwo, vielleicht irre ich mich auch, eine Möglichkeit ein Feld auf UNIQUE zu setzen.

            Du irrst. Du kannst in der Spaltendefinition den entsprechenden Spaltenconstraint setzen, wie Dir das sehr nützliche Syntaxdiagramm der Spaltendefiniton, das Dir bereits verlinkt wurde, zeigt. Schaust Du Dir die Definition von column-constraint und conflict-clause an, so siehst Du, dass Du im einfachsten Fall einfach nur ein UNIQUE anhängen musst:

            b VARCHAR(20) UNIQUE

            Wovon reden wir jetzt von einem eigenen Query, den ich dort anbringen soll, oder die Funktionen des Teils zur Tabellen erstellung. Bei Letzterem finde ich keine Möglichkeit UNIQUE zu setzen, Du?

            »» Hätte ich nicht erwartet, dachte das Teil muss gut sein.

            ich finde dieses Werkzeug top und benutze es gern. Welche Probleme hast Du mit den von Dir getesteten Werkzeugen wirklich? Ich konnte noch keines nachvollziehen.

            Habe ich doch alles schon ausführlich geschrieben. Wie wärs wenn du mal konkret auf die von mir genannten Probleme eingehst? Besonders die Insert Funktionen der Tools in Kombi mit meinem UNIQUE Statement und/oder in Kombi mit AUTOINCREMENT Problematik.

            Mike

            1. Hallo Mike,

              » wie wäre es mit einer Fehlerbeschreibung?
              Du fragst nach einer Fehlerbeschreibung aber zitierst gleichzeitig nachfolgend die gennenten Probleme? Das verstehe ich nicht.

              ja selbstverständlich. Ich weiß nicht, was Du erwartest und was Du erhältst.

              » »» CREATE  TABLE  IF NOT EXISTS "main"."t1" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "a" VARCHAR, "b" VARCHAR, "c" TEXT)

              » »» Was ist daran falsch?
              » wird ausgeführt, es gibt keine Fehlermeldung. Wo ist das Problem?
              Warum zitierst du jetzt nicht was ich bereits dazu geschrieben hatte?

              Hab' ich doch.

              Während hier bei jedem noch so kleinen HTML-Semantik-Problem gemeckert wird, meinst du wenn ein SQL-Query fehlerhaft ist, geht das in Ordnung, weil funktioniert ja?

              Du erwartest also einen Syntaxfehler? Ja? Warum schreibst Du das nicht? *Ich* weiß nicht, was Du erwartest.

              » »» Und warum der das ""main"."t1"" macht verstehe ich auch nicht Tabellenname sollte t1 sein.
              »
              » Was verstehst Du hieran genau nicht? Das doppelte Anführungszeichen sind ANSI-gerechte Quotes, d.h. damit werden Bezeichner gequotet - ....»»
              »
              » Ist Dir die Schreibweise
              »
              »     datenbankname.tabellenname
              »
              » noch nicht über den Weg gelaufen?

              Auch hier lässt du meine Begründung weg. Es geht nicht um die Quotes, sondern darum das meine DB gar nicht MAIN heisst.

              Woher sollte ich das wissen? Steht nirgends. Außerdem: woher kommt diese Schreibweise? Weiß ich nicht. Woher auch? Ich habe keine Glaskugel.

              Warum er dann, wenn er schon nicht nur meinen Tabellennamen alleine nimmt, das noch dazu macht ist fraglich.

              Wer macht das? Wann? Wo?

              » »» Dann sehe ich nirgendwo, vielleicht irre ich mich auch, eine Möglichkeit ein Feld auf UNIQUE zu setzen.
              »
              » Du irrst. Du kannst in der Spaltendefinition den entsprechenden Spaltenconstraint setzen, wie Dir das sehr nützliche Syntaxdiagramm der Spaltendefiniton, das Dir bereits verlinkt wurde, zeigt. Schaust Du Dir die Definition von column-constraint und conflict-clause an, so siehst Du, dass Du im einfachsten Fall einfach nur ein UNIQUE anhängen musst:
              »
              »   b VARCHAR(20) UNIQUE
              »

              Wovon reden wir jetzt von einem eigenen Query, den ich dort anbringen soll, oder die Funktionen des Teils zur Tabellen erstellung. Bei Letzterem finde ich keine Möglichkeit UNIQUE zu setzen, Du?

              Warum schreibe ich Dir, wie es geht? Selbstredend weil es so geht, wie ich dies schreibe.

              CREATE TABLE test (  
                  b VARCHAR(20) UNIQUE  
              );
              

              erstellt in der aktuellen Datenbank die Tabelle test mit der Spalte b. Diese Spalte ist mit einem UNIQUE-Index versehen. Beachte bitte, dass NULL-Werte in dieser Spalte als *unterschiedlich* gewertet werden - genauso wie es in der Dokumentation steht.

              Habe ich doch alles schon ausführlich geschrieben.

              Nein. Nicht. Es ist in Deinem Kopf - aber nicht hier.

              Wie wärs wenn du mal konkret auf die von mir genannten Probleme eingehst? Besonders die Insert Funktionen der Tools in Kombi mit meinem UNIQUE Statement und/oder in Kombi mit AUTOINCREMENT Problematik.

              Welches Problem hast Du mit AUTOINCREMENT?

              Das da:

              » » » Ein anderes Ding ist das Autoincrement Feld. Aber wohl eher ein Problem von Sqlite, denn wenn ich bei der Erstellung,

              Die SQLite-Doku sagt wunderbar, wie Du in SQLite ein AUTOINCREMENT hinbekommst - und dass Du es prinzipiell gesehen überhaupt nicht brauchst.

              » » » wie empfohlen, zu dem INTEGER auch noch, wie bei MYSQL gewohnt, eine Zahl eingeben also INTEGER(9) eingebe, dann wird das nix mit Autoincrement.

              wo wird solcher Unsinn mit MySQL-proprietärem Kram empfohlen.

              oder das da:

              » » CREATE  TABLE  IF NOT EXISTS "main"."t1" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "a" VARCHAR, "b" VARCHAR, "c" TEXT)

              » » Was ist daran falsch? Es gibt keine AUTOINCREMENT Bezeichnung in Sqlite, nur weil Viele das meinen, hatte ich am Anfang meine grösste Mühe das zu verstehen.

              Du irrst schon wieder. In SQLite gibt es das AUTOINCREMENT-Schlüsselwort.

              Wiederum weiß ich nicht, was Du erwartest und was Du erhältst.

              Freundliche Grüße

              Vinzenz

              1. Hi,

                bevor ich nun wieder alles zitiere, bringe ich es mal auf den Punkt.

                Wir reden hier aneinander vorbei, deine Aussagen beziehen sich auf SQL Syntax, usw... meine Frage habe aber nicht direkt damit zu tun, mir geht es darum eine Tool wie PHPmyAdmin zu nutzen das vernünftig durch Formulare diese Querys so ausführt, wie ich sie ausgeführt werden würden wenn ich sie selbst definiere. Das ist nun mal nicht der Fall und wenn ich das Textfeld in solchen Tools nutzen muss um meine eigenen Statements zu machen, dann kann ich gleich auf das Tool verzichten und weiterhin das manuell machen.

                Du irrst schon wieder. In SQLite gibt es das AUTOINCREMENT-Schlüsselwort.

                Du meinnst ich irre mich, widersprichst du dir da nicht selbst?
                http://forum.de.selfhtml.org/archiv/2008/4/t169955/#m1110399

                Mike

                1. Hallo,

                  bevor ich nun wieder alles zitiere, bringe ich es mal auf den Punkt.

                  Wir reden hier aneinander vorbei, deine Aussagen beziehen sich auf SQL Syntax, usw... meine Frage habe aber nicht direkt damit zu tun, mir geht es darum eine Tool wie PHPmyAdmin zu nutzen das vernünftig durch Formulare diese Querys so ausführt, wie ich sie ausgeführt werden würden wenn ich sie selbst definiere.

                  Du meinst, dass Du Dir eine Abfrage, aber auch ein CREATE-TABLE-Statement zusammenklicken kannst? Das Verfahren nennt man Query by Example. Mir war nicht klar, dass Du soetwas suchst.

                  Das ist nun mal nicht der Fall und wenn ich das Textfeld in solchen Tools nutzen muss um meine eigenen Statements zu machen, dann kann ich gleich auf das Tool verzichten und weiterhin das manuell machen.

                  ich benötige so was fast nie, bzw. für mich sind die Zusammenklickorgien zu umständlich. Dazu kann ich das, was ich gerade brauche, nicht auswählen :-)

                  » Du irrst schon wieder. In SQLite gibt es das AUTOINCREMENT-Schlüsselwort.

                  Du meinnst ich irre mich, widersprichst du dir da nicht selbst?
                  http://forum.de.selfhtml.org/archiv/2008/4/t169955/#m1110399

                  Nein, ich widerspreche mir nicht selbst. Das Schlüsselwort AUTO_INCREMENT gibt es nämlich nicht. Darauf verwies ich im Beitrag auf Ina, weil dieses eine wikibook genau dieses eine, angeblich geprüfte, Statement brachte.

                  Freundliche Grüße

                  Vinzenz

      2. Hallo Mike,

        Alles in allem nicht gerade vertrauenserweckend. Aber was solls, getestet und siehe da, die gleiche Problematiken wie bei den Anderen. Also wieder ab in den Muell damit.

        Kann ich nicht nachvollziehen, komme gut damit klar.

        Ale×

        1. Hi,

          »» Alles in allem nicht gerade vertrauenserweckend. Aber was solls, getestet und siehe da, die gleiche Problematiken wie bei den Anderen. Also wieder ab in den Muell damit.

          Kann ich nicht nachvollziehen, komme gut damit klar.

          Hmmm, du sagst also du hast kein Problem damit? Dann frage ich mich wie du folgendes machst? Tabell erstellen wobei die erste Spalte sozusagen den Autonindex automattisch einführen soll. Dann auf Insert gehen und ein paar Einträge machen(OHNE DEN WERT DER ERSTEN SPALTE SELBST ANZUGEBEN).

          Funktioniert das bei dir?

          Mike

          1. Hallo,

            Hmmm, du sagst also du hast kein Problem damit? Dann frage ich mich wie du folgendes machst? Tabell erstellen wobei die erste Spalte sozusagen den Autonindex automattisch einführen soll. Dann auf Insert gehen und ein paar Einträge machen(OHNE DEN WERT DER ERSTEN SPALTE SELBST ANZUGEBEN).

            das geht ganz automatisch. Du brauchst gar nichts zu tun. Macht SQLite von selbst.

            Freundliche Grüße

            Vinzenz

            1. Hi,

              das geht ganz automatisch. Du brauchst gar nichts zu tun. Macht SQLite von selbst.

              das ist mir schon klar, aber eben nicht in dem Insert Formular des Tools und darum geht es.

              Mike

  2. Hi,

    ich habe nun schon einige Admintools für Sqlite ausprobiert, alle haben irgendwelche Macken. Es sei denn ich mache etwas falsch.

    create table z (
    id integer primary key,
    a varchar,
    b varchar,UNIQUE(b)
    );

    Das sollte doch eigentlich richtig sein(?), funktionieren tut es auch.

    Vielleicht mal SQLite-Doku konsultieren: http://www.sqlite.org/lang_createtable.html

    Ein anderes Ding ist das Autoincrement Feld. Aber wohl eher ein Problem von Sqlite, denn wenn ich bei der Erstellung, wie empfohlen, zu dem INTEGER auch noch, wie bei MYSQL gewohnt, eine Zahl eingeben also INTEGER(9) eingebe, dann wird das nix mit Autoincrement.

    s.o.

    Viel Erfolg
    Gast

    1. Hi,

      »» create table z (
      »» id integer primary key,
      »» a varchar,
      »» b varchar,UNIQUE(b)
      »» );
      »»
      »» Das sollte doch eigentlich richtig sein(?), funktionieren tut es auch.
      Vielleicht mal SQLite-Doku konsultieren: http://www.sqlite.org/lang_createtable.html

      Das immer wieder auf dieses englische, fachlatain, ohne Suchfunktion verlinkt wird. Ein konkreter Hinweis wäre sicher besser, so is dein Link unbrauchbar.

      Als ich eine Möglichkeit suchte UNIQUE Werte auf dieses Art zu bestimmen habe ich überall gesucht, natürlich auch im Manual, und auch hier im Forum einiges angeschaut. Irgendwo her muss ich ja dann gefunden haben, das dies richtig ist und würde mich nicht wundern wenns im Manual war. Wie gesagt es funktioniert auch, wenn du meinst es wäre falsch dann sag es auch und schmeiss nicht einfach einen Link unbegründet hinein.

      »» Ein anderes Ding ist das Autoincrement Feld. Aber wohl eher ein Problem von Sqlite, denn wenn ich bei der Erstellung, wie empfohlen, zu dem INTEGER auch noch, wie bei MYSQL gewohnt, eine Zahl eingeben also INTEGER(9) eingebe, dann wird das nix mit Autoincrement.
      »»
      s.o.

      Wenn du etwas meinst zu wissen, dann sag es.

      Mike