2017-05-27 66 views
1

由於某些原因,我通過使用MYSQL命令DROP DATABASE將我的數據庫刪除。Django - 重建項目數據庫

我使用Python3.6和Django 1.11與MySQL數據庫。

現在,我該如何重建我的models.py後面的數據庫/表?

我只是使用makemigrations,但我有一些錯誤,如果Django沒有忘記任何表。

manage.py makemigrations 

File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 292, in query 
_mysql.connection.query(self, query) 
django.db.utils.ProgrammingError: (1146, "Table 'agora.start_games' doesn't exist") 

有關信息,'start'是我在我的django項目中唯一的應用程序。我知道這張桌子不存在,我只是想讓所有的重建。

然後,我想:

[email protected]:/home/django-project/agora# python3.6 manage.py migrate --run-syncdb 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 101, in execute 
    return self.cursor.execute(query, args) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 250, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler 
    raise errorvalue 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 247, in execute 
    res = self._query(query) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 411, in _query 
    rowcount = self._do_query(q) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 374, in _do_query 
    db.query(q) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 292, in query 
    _mysql.connection.query(self, query) 
_mysql_exceptions.ProgrammingError: (1146, "Table 'agora.start_games' doesn't exist") 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 355, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 327, in execute 
    self.check() 
    File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 359, in check 
    include_deployment_checks=include_deployment_checks, 
    File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 62, in _run_checks 
    issues.extend(super(Command, self)._run_checks(**kwargs)) 
    File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 346, in _run_checks 
    return checks.run_checks(**kwargs) 
    File "/usr/local/lib/python3.6/site-packages/django/core/checks/registry.py", line 81, in run_checks 
    new_errors = check(app_configs=app_configs) 
    File "/usr/local/lib/python3.6/site-packages/django/core/checks/urls.py", line 16, in check_url_config 
    return check_resolver(resolver) 
    File "/usr/local/lib/python3.6/site-packages/django/core/checks/urls.py", line 26, in check_resolver 
    return check_method() 
    File "/usr/local/lib/python3.6/site-packages/django/urls/resolvers.py", line 254, in check 
    for pattern in self.url_patterns: 
    File "/usr/local/lib/python3.6/site-packages/django/utils/functional.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python3.6/site-packages/django/urls/resolvers.py", line 405, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/usr/local/lib/python3.6/site-packages/django/utils/functional.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python3.6/site-packages/django/urls/resolvers.py", line 398, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 978, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 961, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 655, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 678, in exec_module 
    File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed 
    File "/home/django-project/agora/agora/urls.py", line 21, in <module> 
    url(r'^start/', include('start.urls')), 
    File "/usr/local/lib/python3.6/site-packages/django/conf/urls/__init__.py", line 50, in include 
    urlconf_module = import_module(urlconf_module) 
    File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 978, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 961, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 655, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 678, in exec_module 
    File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed 
    File "/home/django-project/agora/start/urls.py", line 17, in <module> 
    from . import views 
    File "/home/django-project/agora/start/views.py", line 3, in <module> 
    from .forms import MinimumRegisterForm, GamesRegisterForm 
    File "/home/django-project/agora/start/forms.py", line 26, in <module> 
    class GamesRegisterForm(forms.Form): 
    File "/home/django-project/agora/start/forms.py", line 28, in GamesRegisterForm 
    for game in Games.objects.all().order_by('title'): 
    File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 250, in __iter__ 
    self._fetch_all() 
    File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 1102, in _fetch_all 
    self._result_cache = list(self._iterable_class(self)) 
    File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 53, in __iter__ 
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch) 
    File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 876, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 80, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 101, in execute 
    return self.cursor.execute(query, args) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 250, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler 
    raise errorvalue 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 247, in execute 
    res = self._query(query) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 411, in _query 
    rowcount = self._do_query(q) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 374, in _do_query 
    db.query(q) 
    File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 292, in query 
    _mysql.connection.query(self, query) 
django.db.utils.ProgrammingError: (1146, "Table 'agora.start_games' doesn't exist") 

回答

0

我的問題解決了。對於那些遇到同樣問題的人來說,這是我的解決方案。

1)備份你的Django項目,並刪除該文件夾

2)創建的同名

3一個新的Django項目)創建新的Django應用程式使用相同的名稱

4)進口並替換settings.py

5)輸入makemigrations然後遷移命令

- >現在,數據庫恢復(創建一個新的數據庫手動之前需要)

6)您現在可以卸下這個項目,並導入備份項目

7)輸入makemigrations然後遷移命令

- >的高配車型存入數據庫,現在完全恢復

/!\當然,所有的數據都會丟失,我必須重新創建一個Django管理面板的超級用戶。

2

第一步是在MySQL中重新創建數據庫,並設置憑據:

mysql> create database foo; grant all on foo.* to someuser with password 'foopass'; 

然後,設置您的settings.py文件,上面的信息:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'foo', 
     'USER': 'someuser', 
     'PASSWORD': 'foopass', 
     'HOST': '127.0.0.1', 
    } 
} 

接下來,運行migrate--run-syncdb選項:

python manage.py migrate --run-syncdb 

這應該正確設置您的數據庫。

+0

感謝您的幫助。但是--syncdb不被識別爲有效的參數。可能是因爲Django版本1.11? – GrandGTO

+0

對不起,它的['run-syncdb'](https://docs.djangoproject.com/en/1.11/ref/django-admin/#django-admin-migrate)。 –

+0

好吧,但它顯示相同的錯誤消息,告訴'agora.start_games'不存在。 – GrandGTO