2017-10-19 20 views
0

EclipseでJDBCを使用してテーブルを作成しようとしているときに、上記の "Position: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のを言うのラインだったことそれを考え出しました。デフォルトは「+」ですが、問題の内容はわかりません。どんな助けでも大歓迎です。

+3

構文は 'create table t(...)'です。括弧がありません。 –

+0

あなたが慣れ親しんだ言語の構文がうまく見えていて、あまりよく知られていない言語に文字列を渡している場合、謎のエラーメッセージは他の言語にある可能性があります –

答えて

0

適切なcreate tableステートメントに関するコメントに加えて、COLLATE pg_catalog. defaultに余分なスペースがあります。それはあなたが完全に削除できる無駄なステートメントでもあることに注意してください。

PS:コピー/貼り付けによって、この余分なスペースが5 varcharフィールドにあります。

関連する問題