2017-08-02 43 views
2

我在看PostgreSQL documentation,我看到Postgres沒有一個datatime數據類型,但是當我運行./manage.py sqlmigrate myapp 0001_initialDjango實際上產生一個datetime場:Django的DATATIME場

CREATE TABLE "myapp_event" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "start" datetime NOT NULL); 

所以我有點糊塗了。是datetime假設是timestamp

更新: 我沒有意識到我在SQLite數據庫中使用了不同的設置文件。希望這個錯誤對其他人有用。

在PostgreSQL它看起來像這樣:

CREATE TABLE "myapp_event" ("id" serial NOT NULL PRIMARY KEY, "start" timestamp with time zone NOT NULL); 

所以datetime在SQLite是PostgreSQL中timestamp with time zone

回答

0

Postgres確實沒有datetime數據類型。它沒有AUTOINCREMENT屬性。 Django必須向您顯示這些內容,將Pstgres timestamp轉換爲datetimeSERIAL轉換爲AUTOINCREMENT

PS SERIAL本身也不是數據類型。

這裏是我改變你的語句Postgres的一個:

t=# CREATE TABLE "myapp_event" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "start" datetime NOT NULL); 
ERROR: syntax error at or near "AUTOINCREMENT" 
LINE 1: ... "myapp_event" ("id" integer NOT NULL PRIMARY KEY AUTOINCREM... 
                  ^
t=# CREATE TABLE "myapp_event" ("id" SERIAL PRIMARY KEY, "start" datetime NOT NULL); 
ERROR: type "datetime" does not exist 
LINE 1: ...E "myapp_event" ("id" SERIAL PRIMARY KEY, "start" datetime N... 
                  ^
t=# CREATE TABLE "myapp_event" ("id" SERIAL PRIMARY KEY, "start" timestamp NOT NULL); 
CREATE TABLE 
+0

我的版本是9.6,我跑的語句與'psql' –

+0

沒有後顧之憂。讓我們只是掃除評論,因爲它們是無關緊要的:) –