我正在阅读PostgreSQL documentation,我发现Postgres没有datatime
数据类型,但是当我运行./manage.py sqlmigrate myapp 0001_initial
Django时实际生成了datetime
} field:
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);
所以SQLite中的datetime
在PostgreSQL中是timestamp with time zone
。
答案 0 :(得分:0)
Postgres确实没有日期时间数据类型。它没有AUTOINCREMENT
属性。 Django必须向您展示这些内容,将Pstgres timestamp
转换为datetime
并将SERIAL
转换为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