错误:在“schedule_id”或其附近出现语法错误
问题描述:
尝试在Eclipse中通过JDBC创建表时,遇到上述“位置:39”错误。错误:在“schedule_id”或其附近出现语法错误
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class PostgreSQLJDBC_Create {
public static void main(String args[]) {
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager
.getConnection("jdbc:postgresql://localhost:5432/postgres",
"postgres", "redacted");
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "CREATE TABLE public.feeding_schedules " +
"schedule_id VARCHAR(80) COLLATE pg_catalog. default, " +
"feeding_time VARCHAR(80) COLLATE pg_catalog. default, " +
"recurrence VARCHAR(80) COLLATE pg_catalog. default, " +
"food VARCHAR(80) COLLATE pg_catalog. default, " +
"notes VARCHAR(80) COLLATE pg_catalog. default, " +
"animalid integer NOT NULL" +
"PRIMARY KEY (schedule_id) ";
String addConstraint ="alter table public.feeding_schedules "+
"ADD CONSTRAINT feeding_schedule_animalid_fkey FOREIGN KEY "+
"FOREIGN KEY(animalid) "+
"REFERENCES public.animals (animalid) "+
"ON UPDATE NO ACTION "+
"ON DELETE NO ACTION";
stmt.executeUpdate(sql);
stmt.executeUpdate(addConstraint);
stmt.close();
c.close();
} catch (Exception e) {
System.err.println(e.getClass().getName()+": "+ e.getMessage());
System.exit(0);
}
System.out.println("Table created successfully");
}
}
做了一些测试后,我想通了,这是,说:“” schedule_id VARCHAR(80)COLLATE pg_catalog行。默认,“+”,但我不知道问题是什么。任何帮助将不胜感激。
答
除了有关正确的create table语句的注释,您还有一个额外的空间COLLATE pg_catalog. default
。请注意,这也是一个无用的陈述,您可以完全删除。
PS:由于复制/粘贴,您在5 varchar
字段中有此额外空间。
语法是'create table t(...)',你错过了括号。 –
如果您熟悉的语言的语法看起来很好,并且您正在将字符串传递给您可能不太熟悉的语言,则神秘错误消息很可能在其他语言中 –