2015-10-12 23 views
10
yekabathula-macbookair2:roster yekabathula$ python manage.py migrate 
Operations to perform: 
    Synchronize unmigrated apps: staticfiles, messages 
    Apply all migrations: admin, contenttypes, api, auth, sessions 
Synchronizing apps without migrations: 
    Creating tables... 
    Running deferred SQL... 
    Installing custom SQL... 
Running migrations: 
    Rendering model states... DONE 
    Applying contenttypes.0001_initial... OK 
    Applying auth.0001_initial... OK 
    Applying admin.0001_initial... OK 
    Applying api.0001_initial... OK 
    Applying contenttypes.0002_remove_content_type_name... OK 
    Applying auth.0002_alter_permission_name_max_length... OK 
    Applying auth.0003_alter_user_email_max_length... OK 
    Applying auth.0004_alter_user_username_opts... OK 
    Applying auth.0005_alter_user_last_login_null... OK 
    Applying auth.0006_require_contenttypes_0002... OK 
    Applying sessions.0001_initial... OK 
yekabathula-macbookair2:roster yekabathula$ python manage.py syncdb 
/Library/Python/2.7/site-packages/django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9 
    warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning) 

Operations to perform: 
    Synchronize unmigrated apps: staticfiles, messages 
    Apply all migrations: admin, contenttypes, api, auth, sessions 
Synchronizing apps without migrations: 
    Creating tables... 
    Running deferred SQL... 
    Installing custom SQL... 
Running migrations: 
    No migrations to apply. 

Sau khi thực hiện python manage.py di chuyển, bảng không được tạo trong cơ sở dữ liệu từ mô hình của tôi, bạn có thể tạo các bảng khác từ django_session v.v .. Có điều gì khác mà tôi cần để làm theo ở đây?Di chuyển Django 1.8 không tạo bảng

+0

Bạn đã thực hiện 'makemigrations' trước khi thực hiện 'di chuyển'? – karthikr

+1

Vâng, tôi đã làm. với 'makemigrations', nó có thể đóng tập tin di trú. Nhưng khi tôi làm 'di chuyển', nó không tạo ra các bảng. – YSK

+0

Nếu bạn đang nâng cấp, hãy đảm bảo bạn đã xóa tất cả các tệp di chuyển về phía nam cũ khỏi thư mục di chuyển. – karthikr

Trả lời

2

Tôi gặp sự cố tương tự và chỉ tìm ra được. Tôi có nhiều cơ sở dữ liệu. Một địa phương của tôi (một trong những không được cập nhật) là một cơ sở dữ liệu MySQL. Những người khác là MS SQL Server và MySQL. Tôi có bộ định tuyến để các cơ sở dữ liệu khác kể từ khi tôi không quản lý chúng và đã có (trong Django 1.6) sử dụng các bộ định tuyến để cho biết allow_sync() = False. Với 1,7, tôi đã thay đổi thành allow_migrate() = False. NHƯNG TÔI KHÔNG THÊM ROUTER ĐỂ XÂY DỰNG ĐỊA PHƯƠNG ĐỊA PHƯƠNG CỦA TÔI. Mặc định dường như là allow_migrate() = False nếu không có. Kết quả là, việc di chuyển không thành công âm thầm (Tham khảo: https://docs.djangoproject.com/en/1.7/topics/db/multi-db/). Tôi đã thêm một bộ định tuyến cho DB địa phương của tôi, thiết lập allow_migrate() để trả về True và bây giờ di chuyển của tôi thực sự tạo ra các bảng của tôi.

0

này giải quyết vấn đề đối với tôi (tôi đang sử dụng MySQL Workbench bằng cách này):

  • Run sql này: SET FOREIGN_KEY_CHECKS = 0;
  • Chọn tất cả các bảng trong cơ sở dữ liệu django bạn (nhấp vào ngày đầu tiên bảng, sau đó nhấn và giữ shift, sau đó nhấp vào bảng cuối cùng). Sau đó nhấp chuột phải và chọn "Drop n bảng" (trong đó n là số bảng mà bạn vừa chọn)
  • sau đó chạy python manage.py migrate
  • Cuối cùng khôi phục cài đặt kiểm tra chính nước ngoài bằng cách chạy sql này: SET FOREIGN_KEY_CHECKS = 1;

Note : Trước khi thực hiện biện pháp quyết liệt này, tôi đã thử những gì Paulo Pessoa cho biết trong bình luận của mình, nhưng tôi vẫn nhận được "Không có di chuyển để áp dụng." tin nhắn. Tuy nhiên, điều này đã giải quyết được vấn đề.

+0

Chăm sóc để giải thích ý kiến, xin vui lòng? –

45

Tôi đã gặp phải sự cố tương tự ở Django 1.10 và không có giải pháp nào ở trên phù hợp với tôi.

gì cuối cùng làm việc được chạy lệnh này:

python manage.py migrate --fake myappname zero 

này đặt lại tất cả di cư (trạng thái 0)

này tiếp theo:

python manage.py migrate myappname 

tạo các bảng đối với tôi.

Nếu bạn không muốn quay trở lại với ban đầu (zero) nhà nước nhưng nói đến số di cư 0005 (di chuyển gần nhất mà làm việc), bạn thay vì có thể làm điều này:

python manage.py migrate --fake myappname 0005 

Và sau đó tiến hành Di chuyển với thực tế:

python manage.py migrate myappname 

Xem thêm chi tiết trong docs

+0

Cảm ơn, tôi chỉ đối mặt với cùng một vấn đề và được giải quyết bằng kỹ thuật của bạn – mmrs151

+0

Hoàn hảo! Nó cứu mông tôi. – Volatil3

+1

Chà, cũng hoạt động ở mức 1.8.4! – Clocker

1
  • Xóa các bảng đã tồn tại của các mô hình.

  • Xóa thư mục di chuyển trong thư mục ứng dụng.

  • Xóa tất cả các bản ghi di chuyển có liên quan trong bảng
    "django_migrations".

  • Bây giờ bạn sẽ có được mô hình và cơ sở dữ liệu rõ ràng. Sử dụng hiệu ứng và di chuyển để tạo bảng.

Hy vọng sẽ giúp bạn.

+0

Vui lòng tham gia [tour] (https://stackoverflow.com/tour) và đọc [how tos] (https://stackoverflow.com/help) để tìm hiểu cách đóng góp có ý nghĩa và viết câu trả lời hay. – creimers

+0

Câu trả lời của ông thường hoạt động. –

1

tôi đã chạy qua cùng một vấn đề. Sau nhiều lần đào, tôi tìm thấy giải pháp. Tôi đã sử dụng django 1.11.

Nếu bạn muốn bắt đầu giao

1)delete all the files in your migrations folder except __init__.py 
2)drop database 
3)create database 
4)python makemigrations 
5)python migrate 

nếu bạn đã reset_db bạn có thể sử dụng thay vì 2 và bước 3.

python manage.py reset_db

+0

Nếu có nhiều ứng dụng, chỉ có một ứng dụng gặp sự cố, hãy thả cơ sở dữ liệu không phải là một phương pháp tốt. – aircraft

+0

Có! i trường hợp của tôi, tôi chỉ có một ứng dụng và muốn bắt đầu lại. –

0

Trong trường hợp của tôi file __init__.py đã mất tích từ APP/di cư/thư mục. Nếu bạn không có, tất cả những gì cần là một tệp __init__.py trống.

Các vấn đề liên quan