2012-03-22 8 views
45

में तालिका बनाएं मुझे समझ में नहीं आता कि इस क्वेरी के साथ क्या गलत है? क्वेरी उपकरण PostgreSQL में एक टेबल नहीं बनाना चाहता है।postgreSQL

CREATE TABLE article (
article_id bigint(20) NOT NULL auto_increment, 
article_name varchar(20) NOT NULL, 
article_desc text NOT NULL, 
date_added datetime default NULL, 
PRIMARY KEY (article_id) 
); 
+1

क्या त्रुटि आप मिलता है? – Mark

+0

त्रुटि: पर या निकट "(" एसक्यूएल राज्य सिंटेक्स त्रुटि: 42,601 चरित्र: निकट "(" लाइन 2 पर सिंटेक्स त्रुटि या:: 41 –

+1

मैं भी त्रुटि मिलती है article_id bigint (20) नहीं NULL auto_increment, – Mark

उत्तर

93

पहले bigint(20) not null auto_increment काम नहीं करेगा, बस bigserial primary key का उपयोग करें। पोस्टग्रेएसक्यूएल में datetimetimestamp है। कुल मिलाकर:

CREATE TABLE article (
    article_id bigserial primary key, 
    article_name varchar(20) NOT NULL, 
    article_desc text NOT NULL, 
    date_added timestamp default NULL 
); 
+3

क्यों, 'auto_increment' एक MySQL सुविधा है। पोस्टग्रेज़ एक ही उद्देश्य के लिए' धारावाहिक 'कॉलम का उपयोग करता है। –

+2

@ ब्रैडकोच: हां और नहीं। पोस्टग्रेएसक्यूएल' धारावाहिक 'और' बड़े पैमाने पर 'प्रदान करता है चूंकि क्यू में 'बिगिंट (20)' है, मैंने अपने जवाब में 'bigserial' चुना था। यह इस मामले में एक बेहतर मैच है। –

+1

ब्लॉग लेख इंजन के रूप में ओपी के स्पष्ट उपयोग मामले को देखते हुए, अधिकतम 2 अरब का धारावाहिक आकार प्रविष्टियां (सीरियल) तब तक पर्याप्त होनी चाहिए जब तक कि वह बेहद शानदार न हो।) लेकिन, फिर भी, बड़े पैमाने पर एक करीबी मैच है bigint। –

2

बदलें "bigint (20) नहीं अशक्त auto_increment" द्वारा "रिक्त नहीं bigserial" और टाइमस्टैम्प द्वारा "datetime"

+0

और क्या यह देगा? –

+8

फिर तालिका बनाएं सफल हो जाएगी। –

3
-- Table: "user" 

-- DROP TABLE "user"; 

CREATE TABLE "user" 
(
    id bigserial NOT NULL, 
    name text NOT NULL, 
    email character varying(20) NOT NULL, 
    password text NOT NULL, 
    CONSTRAINT user_pkey PRIMARY KEY (id) 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE "user" 
    OWNER TO postgres; 
-2

इस प्रयास करें:

CREATE TABLE article (
    article_id bigint(20) NOT NULL serial, 
    article_name varchar(20) NOT NULL, 
    article_desc text NOT NULL, 
    date_added datetime default NULL, 
    PRIMARY KEY (article_id) 
); 
+0

'बिगिंट (20) 'पोस्टग्रेज़ में अमान्य है। इसके अतिरिक्त आप एक ही समय में 'bigint' ** और ** 'धारावाहिक' निर्दिष्ट नहीं कर सकते हैं। सही वाक्यविन्यास के लिए स्वीकृत उत्तर देखें –