2013-12-15 5 views
0

내 스키마에서 파일로부터 테이블을 만들려고 시도하지만 오류 메시지가 나타납니다. 공개 스키마에서 생성 된 사용자 테이블은 성공적 이었지만 test1 스키마에서 만든 다른 테이블은 잘못되었습니다. 나는 왜 그런지 모르겠다. 제발 도와주세요. 진심으로 감사드립니다.스키마의 SQL 파일에서 테이블을 만듭니다. PostgreSQL

CREATE SCHEMA test1 
    --Create sequence 
CREATE SEQUENCE test1.table_id_seq START 1; 


--Create function to auto generate ID 
CREATE OR REPLACE FUNCTION test1.next_id(OUT result bigint) AS $$ 
DECLARE 
    our_epoch bigint := 1314220021721; 
    seq_id bigint; 
    now_millis bigint; 
    shard_id int := 1; 
BEGIN 
    SELECT nextval('test1.table_id_seq') % 1024 INTO seq_id; 

    SELECT FLOOR(EXTRACT(EPOCH FROM clock_timestamp()) * 1000) INTO now_millis; 
    result := (now_millis - our_epoch) << 23; 
    result := result | (shard_id << 10); 
    result := result | (seq_id); 
END; 
$$ LANGUAGE PLPGSQL; 

--Talbe ----users---- 
CREATE TABLE users 
(
    id bigserial NOT NULL PRIMARY KEY, 
    username varchar(30) NOT NULL UNIQUE, 
    password varchar NOT NULL, 
    first_name varchar(10), 
    last_name varchar(10), 
    profile_picture varchar, 
    create_time timestamp (0) without time zone 
); 


--Table ----photos---- 
CREATE TABLE test.photos 
(
    id bigint NOT NULL PRIMARY KEY DEFAULT test1.next_id(), 
    caption text, 
    low_resolution varchar, 
    hight_resolution varchar, 
    thumnail varchar, 
    user_id bigint NOT NULL REFERENCES users(id), 
    create_time timestamp (0) without time zone 

--Table ----comments---- 
CREATE TABLE test1.comments 
(
    id bigint NOT NULL PRIMARY KEY DEFAULT test1.next_id(), 
    create_time timestamp (0) without time zone, 
    text text, 
    user_id bigint REFERENCES users(id), 
    photo_id bigint REFERENCES test1.photos(id) 
); 

--Table ----likes---- 
CREATE TABLE test1.likes 
(
    photo_id bigint REFERENCES test1.photos(id), 
    user_id bigint REFERENCES users(id), 
); 

--Table ----follows---- 
CREATE TABLE test1.follows 
(
    user_id bigint NOT NULL REFERENCES users(id), 
    target_id bigint NOT NULL REFERENCES users(id), 
); 

CREATE TABLE teset1.feeds 
(
    user_id bigint NOT NULL REFERENCES users(id), 
    photo_id bigint NOT NULL REFERENCES test1.photos(id), 
    create_time timestamp (0) without time zone, 
); 
+2

"잘못된 것"은 무엇을 의미합니까? 오류 메시지가 나타 났습니까? 어떤 버전의 PostgreSQL? 이 같은 오자에 대한 코드를 검토하라 : CREATE TABLE teset1.feeds'. –

+0

고맙다. 나는 위의 모든 문제를 해결 한 후 Josh Kupershmidt에게이 코드를 잘 적용시켜 준 덕분에 –

답변

2

글쎄, 당신이 얻고있는 오류와 그 오류를 고치려고 한 것을 우리에게 보여 주면 도움이 될 것입니다. 표 test.photos을 만들 끝에 닫는 괄호 및 세미콜론 누락

  • "스키마 TEST1 만들기"후 세미콜론 누락

    1. ...
    2. 덤프 : 그러나 여기 당신이 게시 된 SQL 몇 가지 명백한 문제가있다 "사진"테이블이 가고 싶어하는 "테스트"스키마를 만들지 않습니다.
    3. "test1"이 아닌 "test"스키마에 test1.photos.id의 여러 외부 키 참조가 있지만 "photos"가 만들어졌습니다. 여러 테이블의 마지막 열 정의
    4. 오타 후
    5. 여분의 후행 쉼표 "teset1.feeds는", "test.feeds"

    TL해야한다,이 덤프 파일을 생성 누구든지 DR은 '년후 아주 세심한주의를 기울이십시오.

    위의 모든 문제를 수정 한 후에 SQL을로드 할 수있었습니다.

  • +0

    고맙다. 감사 –

    관련 문제