2016-12-20 10 views
0

Я думал, что это будет просто из-за этого MySQL tutorial by pythonanywhere, но мне все еще не удается переключиться с sqlite3. Я новичок в SQL-базах данных, и я проверял другие вопросы о стеке, но я не уверен, куда еще идти отсюда. Вот что я сделал до сих пор.

settings.pyКак изменить Django db на MySQL на pythonanywhere?

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': '3DPrince$ubodb', 
     'USER': '3DPrince', 
     'PASSWORD': 'secretpassword', 
     'HOST': '3DPrince.mysql.pythonanywhere-services.com', 
    }, 
} 

Я также запустить следующее, чтобы попытаться синхронизировать БД.
manage.py makemigrations
manage.py migrate

Я все еще получаю ошибку, что
(1146, "Table '3DPrince$ubodb.django_site' doesn't exist")
я не уверен, что еще делать здесь, и я не знаю, как сделать какой-либо из проверок консоль mysql bash.

Может ли кто-нибудь указать, что я делаю неправильно? Или, может быть, некоторые полезные команды mysql bash для проверки соединения или вручную переделать db?

+0

Проверьте, является ли [этот ответ] (http://stackoverflow.com/a/34274950/2011147) решает вашу проблему. – Selcuk

ответ

2

Похоже, что что-то пошло не так с миграцией. Я бы рекомендовал вам выполнить следующие шаги, которые воссоздают ваш db.

  1. Сделайте резервную копию своих данных в базе данных !!!

  2. Подключитесь к удаленной базе данных:

    $ mysql -h 3DPrince.mysql.pythonanywhere-services.com -u 3DPrince -p 
    
  3. Удалить текущую базу данных и создать его снова:

    drop database `3DPrince$ubodb`; 
    
    create database `3DPrince$ubodb`; 
    
  4. локально (на вкладке другого терминала) перенести свой проект Джанго:

    $ python manage.py migrate 
    
  5. Check (на вкладке где вы подключены к базе данных REMOVE), что все таблицы созданы правильно:

    use `3DPrince$ubodb`; 
    
    show tables; 
    

Если что-то пойдет не так, вы будете видеть предупреждение или ошибку.

А также вам не нужно делать python manage.py makemigrations все время, потому что эта команда создает только файлы миграции. (они хранятся в yourproj/yourapp/migrations) и ничего не делают для взаимодействия с реальной базой данных. Если вы не изменяете свой проект, вам действительно не нужно заново создавать файлы миграции.

+0

Когда я запускаю 'migrate', он возвращает 'Операции для выполнения: Применить все миграции: allmyapps Запуск миграции: никаких миграций для применения.' Кажется, что не происходит миграции. – RknRobin

+0

Если я зашел в оболочку Django и запустил 'из настроек импорта django.conf' и проверил' settings.DATABASES', он все еще говорит, что я работаю на sqlite3. Мог ли я изменить на правильный файл db (или файл settings.py?) В моем файле WSGI, но не где-то еще в моем коде? – RknRobin

0

Эти шаги помогли мне отладить мою ошибку. Оказывается, мой бэкэнд по-прежнему распознавал предыдущий файл настроек, который я использовал, в то время как мой передний конец искал новый MYSQL, который я переключил на производство. Все, что я сделал, это прокомментировать БД ДАННЫХ из файла настроек settings.py и снова выполнить миграцию, и это сработало.