Matthew Morris
Matthew Morris

Reputation: 99

no such column error in sqlite3

I'm trying trying to insert values into my table, but am getting a no such column error. I was searching and saw that in most cases it was because they were missing quotation marks, but I seem to have them. Can anyone point me in the right direction?

CREATE TABLE students (
id INTEGER PRIMARY KEY,
first_name VARCHAR(255),
last_name VARCHAR(255),
grade INT,
passing BOOLEAN,
teacher_id INT,
FOREIGN KEY (teacher_id) REFERENCES teachers(id)
);

INSERT INTO students (first_name, last_name, grade, passing, teacher_id) 
VALUES (‘Ted’, ‘Mosby’, 84, true, 2);

Error: no such column: ‘Ted’

Upvotes: 3

Views: 11414

Answers (1)

Lukasz Szozda
Lukasz Szozda

Reputation: 175616

Use ' not and 1 instead of true:

SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true).

INSERT INTO students (first_name, last_name, grade, passing, teacher_id) 
VALUES ('Ted', 'Mosby', 84, 1, 2);

In case you want to use variables use same quotes:

INSERT INTO students (first_name, last_name, grade, passing, teacher_id) 
VALUES ('$firstName', '$lastName', 84, 1, 2); 

SqlFiddleDemo

Output:

╔═════╦═════════════╦════════════╦════════╦══════════╦════════════╗
║ id  ║ first_name  ║ last_name  ║ grade  ║ passing  ║ teacher_id ║
╠═════╬═════════════╬════════════╬════════╬══════════╬════════════╣
║  1  ║ Ted         ║ Mosby      ║    84  ║       1  ║          2 ║
╚═════╩═════════════╩════════════╩════════╩══════════╩════════════╝

Upvotes: 11

Related Questions