2017-08-29 1 views
2

Ich versuche, Werte in einer Tabelle in SQLite einzufügen aberSqLite.js nicht erfasste Fehler: CHECK-Einschränkung fehlgeschlagen

SqLite.js Uncaught Error: CHECK constraint failed: st .

immer ich bin nicht in der Lage eine der Fehler zu finden. Kann jemand helfen, den Fehler herauszufinden? Hier

ist mein create table-Anweisung:

CREATE TABLE st(EMPLOYE_ID TEXT primary key , EMPLOYE_Name text NOT NULL , 
father_name text NOT NULL, cnic INTEGER NOT NULL,DOB real not null,address 
text not null, 
username text not null,password text not null, post text not null 
CHECK(typeof(employe_id)='text' AND length(employe_id)<=10 and 
(employe_name)='text' AND 
length(employe_name)<=100 and (father_name)='text' 
AND length(father_name)<=100 and(cnic)='integer' AND length(cnic)=13 and 
(address)='text' and length(address)<=200 
and (username)='text' 
and length(username)<=10 and (password)='text' and length(password)<=20) 
); 

und hier ist meine Insert-Anweisung.

insert into st values('a1','jamshaid','iqbal',1110332507339,julianday('1998- 
10-05'),'26 eb rehmkot','a1','a1','Admin'); 

Antwort

1

Zu allererst: IMMER COLUMN LIST

insert into st(employe_id, employe_name, father_name, cnic, DOB, address, username, password,post) 
values('a1','jamshaid','iqbal',1110332507339,julianday('1998-10-05'),'26 eb rehmkot','a1','a1','Admin'); 

Zweitens es leichter zu lesen und zu debuggen durch Formatierung mit SPEZIFIZIEREN:

CREATE TABLE st(
EMPLOYE_ID TEXT primary key ,    -- typo: employee_id, and why not INT 
EMPLOYE_Name text NOT NULL , 
father_name text NOT NULL, 
cnic INTEGER NOT NULL, 
DOB real not null,       -- why is DOB real and not DATE??? 
address text not null, 
username text not null, 
password text not null,     -- I hope this is not clear text 
post text not null 
CHECK(
    typeof(employe_id)='text' 
AND length(employe_id)<=10 
and typeof(employe_name)='text' 
AND length(employe_name)<=100 
and typeof(father_name)='text' 
AND length(father_name)<=100 
and typeof(cnic)='integer' 
AND length(cnic)=13 
and typeof(address)='text' 
and length(address)<=200 
and typeof(username)='text' 
and length(username)<=10 
and typeof(password)='text' 
and length(password)<=20 
) 
); 

Sie leicht erkennen konnte Ihr Fehler auf diese Weise oder einfach Zeilen kommentieren, bis es funktioniert.

DBFiddle Demo

+1

Vielen Dank für Ihre Antwort. Ich habe meinen Fehler. und danke für deinen Vorschlag. Ich werde folgen, wenn von jetzt. Vielen Dank ... –

Verwandte Themen