这是我在网上学习的一个 SQL 课程。我想我对 SQL 文件的设置而不是 SQL 本身感到困惑。INSERT 语句很简单。
INSERT INTO person (id, first_name, last_name, age)
VALUES (0, "Zed", "Shaw", 37);
INSERT INTO pet (id, name, breed, age, dead)
VALUES (0, "Fluffy", "Unicorn", 1000, 0);
INSERT INTO pet VALUES (1, "Gigantor", "Robot", 1, 1);
在我的 Windows 命令提示符下,它运行良好。
C:\SQLite> sqlite3 ex3.db < ex2.sql
在我的 ex2.sql 中,他似乎建议将第 2 课中的 CREATE 语句与 INSERT 语句结合起来创建一个新的 ex3.db。它似乎工作 - 没有错误。
然后他说运行以下语句来显示我的 INSERT 语句。
C:\SQLite> sqlite3 -echo ex3.db < ex3.sql
我没有显示 INSERT 语句,而是收到以下错误:
The system cannot find the file specified.
上课有错误吗?我认为他从未要求用户创建 ex3.sql 文件?
所以假设这是一个错字,我将 echo 语句更改为使用 ex2.sql,因为这是包含我的 INSERT 语句的文件。
使用 sqlite3 -echo ex3.db < ex2.sql 时出现以下错误
Error: near line 1: table person already exists
Error: near line 8: table pet already exists
Error: near line 16: table person_pet already exists
INSERT INTO person (id, first_name, last_name, age)
VALUES (0, "Zed", "Shaw", 37);
Error: near line 21: PRIMARY KEY must be unique
INSERT INTO pet (id, name, breed, age, dead)
VALUES (0, "Fluffy", "Unicorn", 1000, 0);
Error: near line 24: PRIMARY KEY must be unique
INSERT INTO pet VALUES (1, "Gigantor", "Robot", 1, 1);
Error: near line 27: PRIMARY KEY must be unique
课文有错别字吗?我是否应该自己创建一个仅包含 INSERT 语句的 ex3.sql 文件?