Django manage.py Unknown command: 'syncdb'
PythonDjangoDjango SyncdbSyncdbPython Problem Overview
I'm trying to follow this tutorial but I'm stuck on the 5th step.
When I execute
[~/Django Projects/netmag$] python manage.py syncdb
I get the following error message :
Unknown command: 'syncdb'
Type 'manage.py help' for usage.
and here is the output of ./manage.py help
does not contain syncdb
command. How do I add it?
Thanks for any help! Edit :
When I run migrate, I get this error :
> "Error creating new content types. Please make sure contenttypes " > RuntimeError: Error creating new content types. Please make sure > contenttypes is migrated before trying to migrate apps individually.
in settings.py :
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admindocs',
'blog',
]
Edit 2:
If I remove 'blog',
from settings.py :
:~/Django Projects/netmag$ python manage.py migrate blog
CommandError: App 'blog' does not have migrations.
:~/Django Projects/netmag$ python manage.py makemigrations blog
App 'blog' could not be found. Is it in INSTALLED_APPS?
Python Solutions
Solution 1 - Python
syncdb
command is deprecated in django 1.7. Use the python manage.py migrate
instead.
Solution 2 - Python
You have to use python manage.py migrate
instead rather than python manage.py syncdb
Solution 3 - Python
Run python manage.py makemigrations
result below
Migrations for 'blog':
blog/migrations/0001_initial.py:
- Create model Blog
and after that run python manage.py migrate
result below
Operations to perform:
Apply all migrations: admin, blog, auth, contenttypes, sessions
Running migrations:
Applying article.0001_initial... OK
Solution 4 - Python
the actual command is :
python manage.py migrate --run-syncdb
It will solve many errors in django like , Operational error ,No Table found in databse etc.
Solution 5 - Python
You can do it like this in stages, let's say you have an app called "example":
- Run python manage.py makemigrations example
- A number generates like '0001' get the number
- Run python manage.py sqlmigrate example 0001, using the number. Check out the scripts.
- Run python manage.py migrate example 0001
You can also look at all your migrations like this: python manage.py showmigrations
.
If you don't want to commit it, go to the folder and move it somewhere or delete it before doing step 4.
Solution 6 - Python
However, there is another error that can be happened as strict mode needs to be enabled for MariaDB.
Keep Database connection in the settings.py file as follows:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost', # Or an IP Address that your DB is hosted on
'PORT': '3306',
'OPTIONS': {
'sql_mode': 'traditional',
}
}
}
keep in mind about the below code:
'OPTIONS': {
'sql_mode': 'traditional',
}
After all, if your DJango version is backdated, "python manage.py syncdb" will work but for an updated version more than or equal to 1.7, please use "python manage.py migrate"
Thanks