2017-08-02 6 views
2

私はPostgreSQL documentationを読んでいると私はPostgresがdatatimeデータ型を持っていますが、私は./manage.py sqlmigrate myapp 0001_initialDjangoを実行すると、実際にdatetimeフィールドを生成しないことを参照してください。ジャンゴdatatimeフィールド

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

だから私は少し混乱しています。 datetimetimestampとしますか?

更新: 私はSQLiteデータベースで別の設定ファイルを使用していたことに気付きませんでした。この間違いが他の人にとって有益であることを願っています。

は、PostgreSQLでは、次のようになります。SQLiteの中

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

のでdatetimeはPostgreSQLのtimestamp with time zoneです。

答えて

0

Postgresにはdatetimeデータ型がありません。いずれもAUTOINCREMENT属性を持っていません。 DjangoはPstgres timestampdatetimeに、SERIALAUTOINCREMENTに翻訳して、あなた自身にそれらを表示しているに違いありません。

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

心配ないとの声明を走りました。彼らは無関係なので、コメントを掃除するだけです:) –

関連する問題