[英]“python manage.py syncdb” not creating tables
我先跑了
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
表名。
我也遇到了這個問題,並且能夠通過刪除我的應用程序中的遷移文件夾來繞過它。 某種程度上已經創建並且誘使syncdb認為它已經完全遷移,但是這些遷移腳本實際上沒有做任何有用的事情。 顯然,如果你實際上有想要保存的遷移,請不要嘗試這個,但我正在使用一個全新的應用程序和模型。
我嘗試了上面的大部分想法:
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)。
如果您運行:
python manage.py inspectdb > somefile.txt
如果您的數據庫結構與您的django模型匹配,您可以快速查看。
我有同樣的問題,但我沒有任何“遷移”文件夾。 我解決了下面的問題。
我剛剛在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
我有同樣的問題,並注意到它創建了一個似乎不是空的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 ...
您應該使用此命令
python manage.py migrate
您從manage.py所在的位置運行syncdb的位置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.