Node.js und sqlite, SQLITE_RANGE: binden oder column index out of range
Siehe meine Antwort unten für eine MWE!
Ich weiß, es klingt dumm und die Antwort ist wahrscheinlich direkt vor mir, aber ich kann nicht herausfinden, warum ich diese SQLITE_RANGE Fehler, da mein Objekt sieht aus wie es hat alle Eigenschaften, die benötigt werden.
console.log "values " , values
# Recording in db
console.assert values.login?
console.assert values.password_sha?
console.assert values.email?
console.assert values.token?
values.password = null
@db.run "INSERT INTO user VALUES (NULL, $login, $password_sha, $email, $token)", values, (err) ->
console.error err if err?
Ist hier die Ausgabe von meinem server
values { login: 'ostream',
email: 'ijw',
password: 'justine',
token: 'acppn99ngiafw29',
password_sha: 'b1820c2ec34175954bdaa42038b48886b4c83f8d53f88b5315c415898855e4f8' }
{ [Error: SQLITE_RANGE: bind or column index out of range] errno: 25, code: 'SQLITE_RANGE' }
Vielen Dank im Voraus!
- Versuchen Sie Spalten angeben
INSERT INTO user(col1, col2, col3, col4, col5) VALUES (...)
wocol..
ist die Spalte name . Wenn die erste Spalte ist auto_increment-überspringen Sie es und tun nicht auf NULL setzen - FTR hier ist die .schema meiner Tabelle :
CREATE TABLE user (id integer primary key, login text, password_sha text, email text, token text);
- lad2025: es scheint zu funktionieren, ja. Warum kann ich nicht einfügen, die Werte direkt? Die .schema scheint zu passen.
- Noch immer kann ich nicht einfügen, in meiner Datenbank. Siehe unten meine Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anscheinend was Sie tun müssen ist, stellen Sie sicher, dass der Schlüssel in Ihrem
user
Objekt vorangestellt$
. Ansonstensqlite3
nicht anerkennen und Sie als Werte für die Platzhalter. Versuchen:Es ist nicht sehr gut dokumentiert, aber mit Blick auf die test-Fälle können Sie sehen, dass es andere Optionen gibt, wie ein Präfix mit
@
oder:
. In jedem Fall wird Ihr Objekt hat, um die Platzhalter einschließlich Präfix.column index out of range
FehlerSollten Sie immer angeben Spalte der Liste, wenn Sie
INSERT
:SqlFiddleDemo
Beachten Sie, dass
user
ist Schlüsselwort und sollte zitiert werden mit"
oder umbenannt werden können Tabelleusers
.