2013-05-14 2 views
1

Позвольте мне уточнить, что я пытаюсь сделать. Я разрабатываю свой проект Django на своей машине. Я также проверяю код в репозитории. В настоящее время я единственный разработчик, но другие разработчики присоединятся. Они проведут проверку кода из репозитория и запустит его на своей машине. Чтобы смоделировать этот сценарий, я проверил свой код в другом каталоге и создал новую базу данных. Я обновил settings.py для этой проверки, чтобы использовать новую базу данных. Когда я SyncDB воссоздать таблицы, я получаю эту ошибку:Django: воссоздающие таблицы

$ python -i manage.py syncdb 
DatabaseError: (1146, "Table 'testproj.auth_user' doesn't exist") 
Traceback (most recent call last): 
    File "manage.py", line 13, in <module> 
    execute_from_command_line(sys.argv) 
    File "c:\Users\jpp\Documents\.virtualenvs\django-test\lib\site-packages\dja 
ngo\core\management\__init__.py", line 453, in execute_from_command_line 
    utility.execute() 
    File "c:\Users\jpp\Documents\.virtualenvs\django-test\lib\site-packages\dja 
ngo\core\management\__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "c:\Users\jpp\Documents\.virtualenvs\django-test\lib\site-packages\dja 
ngo\core\management\base.py", line 230, in run_from_argv 
    sys.exit(1) 
SystemExit: 1 

Вот мои настройки базы данных из phymyadmin:

User Host  Type Privileges  Grant Action 
root localhost global ALL PRIVILEGES Yes  Edit Privileges 

и от settings.py:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': 'testproj',    # Or path to database file if using sqlite3. 
     # The following settings are not used with sqlite3: 
     'USER': 'root', 
     'PASSWORD': '****', 
     'HOST': '127.0.0.1',   # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 
     'PORT': '',      # Set to empty string for default. 
    } 
} 

Вот INSTALLED_APPS:

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    # Uncomment the next line to enable the admin: 
    # 'django.contrib.admin', 
    # Uncomment the next line to enable admin documentation: 
    # 'django.contrib.admindocs', 
    'helloworld', 
) 

Поэтому я подозреваю, что у другого разработчика такая же проблема. Это сценарий, который должен был быть рассмотрен раньше, но я еще не смог собрать правильные слова для Google.

+0

Просьба показать полную информацию о трассировке, а также настройки вашей базы данных (не забудьте изменить пароль базы данных, прежде чем показывать ее нам). –

+0

Сохраните HOST также как пустой. Пожалуйста, покажите install_apps с параметром setting.py слишком –

+0

Хорошо, когда я это делаю, я получаю эту ошибку: 'OperationalError: (2003,« Не удается подключиться к серверу MySQL на «localhost» (10061) »). Тем не менее, я использовал HOST как 127.0.0.1 для моих других проектов; localhost не работает для меня. – user2233706

ответ

0

Я нашел проблему.

В приложении, которое я создал, HelloWorld, я имел следующее __init__.py:

from django.contrib.auth.models import User 

if User.objects.filter(username="hello").count() == 0: 
    user = User.objects.create_user(username='hello', password='hellotest') 
    user.save() 

Когда я закомментировать все, если заявление и побежал SyncDB, все столы были воссозданы. Я думаю, прежде чем создавать все свои собственные таблицы, auth_user, auth_group и т. Д. Django делает любую работу, необходимую для приложений. Я не уверен, является ли это результатом того, как пакеты python обрабатывают пакеты или ошибка/ограничение в Django.

0

Вам не нужно создавать тестовые таблицы, Django будет делать это автоматически

Test db documentation.

Вы можете использовать отдельную БД для тестирования, если хотите, просто добавьте ее в свой settings file. Убедитесь, что DB создан, но Django создает сами таблицы.

+0

Это не «тестовая» база данных, а просто другая база данных, которую я создал для проверки сценария, когда другие люди проверяют мой код, у них есть готовые для них таблицы при запуске проекта. У меня не было другой машины, чтобы проверить это, поэтому для моделирования сценария я просто проверил свой код на другой каталог и изменил имя базы данных. База данных, которую я создал, пуста, и она не начинается с «test;» Я думаю, из паранойи я изменил имя, когда я разместил это. – user2233706

Смежные вопросы