El framework Django puede generar tablas de bases de datos basadas en clases de entidad, solo necesitamos ejecutar
python manage.py makemigrations
python manage.py migrate
Solo
Las funciones de estas dos instrucciones son las siguientes:
python manage.py makemigrations se usa para generar archivos de migración
python manage.py migrate se usa para generar archivos de base de datos basados en archivos de migración
Durante mi ejecución, encontré los siguientes problemas:
La excepción anterior fue la causa directa de la siguiente excepción:
Rastreo (última llamada más reciente):
archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ migrations \ recorder.py", línea 67, en sure_schema
editor.create_model (self.Migration)
Archivo "E : \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ backends \ base \ schema.py ", línea 307, en create_model
self.execute (sql, params o None)
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ backends \ base \ schema.py ", línea 137, en ejecutar
cursor.execute (sql, params)
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py ", línea 99, en execute
return super (). execute (sql, params)
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py ", línea 67,en ejecución
return self._execute_with_wrappers (sql, params, many = False, executeor = self._execute)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py", línea 76, en _execute_with_wrappers
return ejecutor (sql, params, many, context)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py", línea 84, en _execute
return self.cursor.execute (sql , parámetros)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ utils.py", línea 89, en __exit__
raise dj_exc_value.with_traceback (traceback) desde exc_value
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py ", línea 82, en _execute
return self.cursor.execute (sql)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ backends \ mysql \ base.py", línea 71, en ejecución
return self.cursor.execute (query, args)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ pymysql \ cursors.py ", línea 170, en el
resultado de la ejecución = self._query (query)
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ pymysql \ cursors.py " , línea 328, en _query
conn.query (q)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ pymysql \ connections.py", línea 517, en la consulta
self._affected_rows = self._read_query_result (unbuffered = unbuffered = )
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ pymysql \ connections.py", línea 732, en _read_query_result
result.read ()
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ pymysql \ connections.py", línea 1075, en read
first_packet = self.connection._read_packet ()
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ pymysql \ connections.py ", línea 684, en _read_packet
packet.check_error ()
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ pymysql \ protocol.py ", línea 220, en check_error
err.raise_mysql_exception (self ._data)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ pymysql \ err.py", línea 109, en raise_mysql_exception
raise errorclass (errno, errval)
django.db.utils.ProgrammingError: (1064, "You tiene un error en su sintaxis SQL;consulte el manual que corresponde a la versión de su servidor MySQL para obtener la sintaxis correcta para usar cerca de '(6) NO
NULL) 'en la línea 1 ")Durante el manejo de la excepción anterior, se produjo otra excepción:
Rastreo (última llamada más reciente):
archivo "manage.py", línea 21, en <module>
main ()
Archivo "manage.py", línea 17, en main
execute_from_command_line (sys.argv)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ core \ management \ __ init__.py ", línea 381, en execute_from_command_line
utility.execute ()
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ core \ management \ __init__.py ", línea 375, en execute
self.fetch_command (subcommand) .run_from_argv (self.argv)
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ core \ management \ base.py ", línea 323, en run_from_argv
self.execute (* args, ** cmd_options)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ core \ management \ base.py", línea 364, en ejecutar
salida = self.handle (* args, ** opciones)
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ core \ management \ base.py ", línea 83, en envuelto
res = handle_func (* args, ** kwargs)
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ core \ management \ command \ migrate.py ", línea 234, en el identificador
fake_initial = fake_initial,
Archivo" E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ migrations \ executeor.py ", línea 91, en
migrate self.recorder.ensure_schema ()
Archivo "E: \ PYTHON_HOME \ Python37 \ lib \ site-packages \ django \ db \ migrations \ recorder.py", línea 69, en sure_schema
raise MigrationSchemaMissing ("No se puede crear la tabla django_migrations (% s)"% exc)
django.db.migrations.exceptions.MigrationSchemaMissing: No se puede crear la tabla django_migrations ((1064, "Tiene un error en su sintaxis SQL; verifique el manual que corresponde a
la versión de su servidor MySQL para la sintaxis correcta para usar cerca de '(6) NOT NULL)' en la línea 1 "))
La causa del problema final es la versión de MySQL,
Django 2.1 ya no es compatible con MySQL 5.5, debe ser la versión 5.6 o posterior
Ver la versión de MySQL
https://www.cnblogs.com/wujf-myblog/p/9570870.html
Ejecutar en el cliente
SELECCIONE LA VERSIÓN ();
Entonces hay dos opciones:
1) Reduce la versión de Django
Instrucciones para reducir la versión de Django:
pip install Django==2.0.0
2) actualización de MySQL
Por favor, consulte mi otro artículo: