我第一次跑
python manage.py syncdb
它为我创建了数据库和表格,然后我尝试添加更多应用程序,这就是我所做的:
按
创建应用python manage.py startapp newapp
然后我在{。:
中将'newapp'
添加到INSTALLED_APPS
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'newapp',
)
最后我跑了syncdb
:
python manage.py syncdb
以及我得到的结果:
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
我检查了我的数据库,没有名为newapp
的表,没有包含newapp
的表名。
答案 0 :(得分:6)
我也遇到了这个问题,并且能够通过删除我的应用程序中的迁移文件夹来绕过它。某种程度上已经创建并且诱使syncdb认为它已经完全迁移,但那些迁移脚本实际上并没有做任何有用的事情。显然,如果你真的想要保存迁移,请不要尝试这个,但我正在使用一个全新的应用程序和模型。
答案 1 :(得分:4)
我尝试了上面的大部分想法:
models.py
(验证在makemigrate期间执行的模块),migrations
文件夹managed = True
(这是默认值),python manage.py inspectdb
(如果我手动创建了表,则正确地转储了表)。 关键是分别在应用上运行makemigrations
:
python manage.py makemigrations <app_name>
执行makemigrations步骤的一部分。然后你做
之后像往常一样。
python manage.py migrate
(适用于Django 1.10,使用Postgres 9.5)。
答案 2 :(得分:3)
如果你跑:
python manage.py inspectdb > somefile.txt
如果您的数据库结构与您的django模型匹配,您可以快速查看。
答案 3 :(得分:1)
我遇到了同样的问题,但我没有任何&#34;迁移&#34;夹。我解决了它,如下所示。
我刚刚添加了app_label
的模型代码
class MyModel(models.Model):
...
class Meta:
managed = True # add this
app_label = 'myapp' # & this
此外,请确保在myapp/models/__init__.py
from model_file.py import MyModel
答案 4 :(得分:0)
我遇到了同样的问题并注意到它创建了一个看起来没空的db.sqlite3文件:
$ ls -l
-rw-r--r-- 1 sauron staff 122880 Jul 31 01:22 db.sqlite3
我尝试使用文件名作为参数再次运行sqlite,并且有效:
$ sqlite3 db.sqlite3
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
CREATE TABLE "auth_group" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(80) NOT NULL UNIQUE
);
... many rows ...
答案 5 :(得分:0)
你应该使用这个命令
eor
您从manage.py所在的位置运行syncdb