问题
I made syncdb (Python/Django application) in Heroku and he created table south_migrationhistory,
(venv-project)username@username:~/projectapp$ heroku run python manage.py syncdb
Running `python manage.py syncdb` attached to terminal... up, run.5529
Syncing...
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table south_migrationhistory
(...)
Synced:
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.sites
> django.contrib.messages
> django.contrib.staticfiles
> django.contrib.admin
> south
Not synced (use migrations):
- core
- galeria
(use ./manage.py migrate to migrate these)
but when I'll migrate application he says that table wasn't created:
(venv-project)username@username:~/projectapp$ heroku run python manage.py migrate core
Running `python manage.py migrate core` attached to terminal... up, run.7542
(...monstruous log...)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 337, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.DatabaseError: no such table: south_migrationhistory
What can be? Thanks.
EDIT: Solved, I put in settings_local gitignore and thereby recognized the database postgres heroku.
回答1:
local_settings.py
import os
SITE_ROOT = os.path.dirname(__file__)
DEBUG = True
TEMPLATE_DEBUG = DEBUG
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(SITE_ROOT, 'data.sqlite3'),
}
}
In your gitignore, add this:
project_name/local_settings.py
*.sqlite3
回答2:
Tested on Django 1.9
settings.py
in_heroku = False
if 'DATABASE_URL' in os.environ:
in_heroku = True
import dj_database_url
if in_heroku:
DATABASES = {'default': dj_database_url.config()}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Then run:
heroku addons:create heroku-postgresql:hobby-dev
sudo apt-get intall postgresql libpq-dev
pip install dj-database-url psycopg2
pip freeze >requirements.txt
git add .
git commit -m 'msg'
git push heroku master
heroku run python manage.py migrate
References:
- There is no more
syncdb, justmigrate: What should I use instead of syncdb in Django 1.9? - https://devcenter.heroku.com/articles/deploying-python
- https://devcenter.heroku.com/articles/heroku-postgresql
来源:https://stackoverflow.com/questions/15467389/heroku-created-table-but-when-ill-migrate-he-says-that-doesnt-created