Lors de la tentative de création d'une table via JDBC dans Eclipse, une erreur indiquant "Position: 39" s'affiche.ERREUR: erreur de syntaxe à ou près de "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");
}
}
Après avoir fait un peu d'essais, je pensais que ce qu'il était la ligne qui dit « » schedule_id VARCHAR (80) COLLATE pg_catalog. par défaut, "+", mais je ne sais pas quel est le problème. Toute aide serait grandement appréciée.
La syntaxe est 'create table t (...)', il vous manque les parenthèses. –
Si la syntaxe du langage que vous connaissez est correcte et que vous transmettez des chaînes à un langage que vous connaissez moins bien, un message d'erreur mystère est susceptible d'être dans cette autre langue –