簡體   English   中英

“python manage.py syncdb”沒有創建表

[英]“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)。

Django文檔

信用,相關帖子

如果您運行:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM