sqlite auf dem PI

  • Hallo an alle,

    ich will mit dem PI nun meine Daten in eine SQLite "Datenbank" loggen.
    Dazu habe ich folgendes Tutorial genutzt:
    Datenbanken mit SQLite

    sqlite 3 und auch die php Schnittstelle sind installiert.

    jedoch wenn ich nachfolgenden Befehl in meine Konsole eingebe

    sqlite3 /var/www/db.sqlite "CREATE TABLE IF NOT EXISTS settings (id INTEGER PRIMARY KEY,user_id INT,setting TEXT,value TEXT);"

    passiert überhaupt nix.

    Was mache ich hierfür falsch?

    muss ich nicht eher in der Konsole erstmal die DB angeben zum Beispiel:
    sqlite3 demo.db dann schreibt die Konsole stets immer sqlite stets vorne hin.

  • Was soll denn deiner Meinung nach passieren? :D

    /var/www/db.sqlite ist die Datenbank. In dieser Datenbank werden Tables erstellst - es können mehrere in einer Datenbank existieren. Der SQL Befehl "CREATE TABLE IF NOT EXISTS" kann wörtlich übersetzt werden: Erzeuge Tabelle falls noch nicht existent".

    Du übergibst beim ausführen des sqlite3 Befehls sowohl die Datebank-Datei als auch den auszuführenden Befehl. Das ist also ein gewisser Unterschied zur interaktiven Konsole..

  • das ist mir soweit klar. aber kann ich den oben aufgeführten Befehl einfach so in die Konsole reinschreiben ? ich habe eben andere Tutorials gefunden wo ich mich erst sqlite demo.db (die zu nutzende DB) in die Konsole eingeben muss und dann eben die Befehle absetzen kann. Für mich zeigst du in deinem Tutorial einen anderen Weg auf. Es hat den Anschein das du die Befehle direkt in die Konsole eingeben kannst.
    Ich hoffe ich konnte mich passend ausdrücken.

  • Ja, du kannst das so schreiben:

    Code
    beer:tmp deets$ sqlite3 --help
    Usage: sqlite3 [OPTIONS] FILENAME [SQL]
    FILENAME is the name of an SQLite database. A new database is created
    if the file does not previously exist.
    OPTIONS include:
    ...

    Und eine UNIX-Philosophie ist: wenn etwas geklappt hat, wird nix gesagt. Wenn ich so ein Kommando wie deines absetze, dann ist danach eine DB mit der Tabelle erzeugt.

  • Der Befehl sqlite3 --help zeigt dir die Syntax welche man verwenden kann:

    Code
    Usage: sqlite3 [OPTIONS] FILENAME [SQL]

    Das in den eckigen Klammern ist Optional, muss also nicht angegeben sein. Wenn man also nur sqlite3 /var/www/db.sqlite ausführt landet man in der interaktiven Konsole/Shell in der man SQL Befehle für die angegebene Datenbankdatei ausführen kann.
    Möchte man aber direkt SQL Befehle, ohne interaktiver Shell, ausführen so gibt man es direkt mit an

    Wenn du den Befehl eingegeben hast kommt je nach SQL Befehl keine Rückmeldung - bei "CREATE TABLE IF NOT EXISTS" wird es eben nur ausgeführt wenn die Tabelle noch nicht existiert, wenn sie aber bereits existiert wird auch kein Fehler erzeugt - thats the magic of this command, but not from sqlite.
    Lass einfach mal "IF NOT EXISTS" weg und du wirst the magic of this command bemerken ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!