• Django2.1迁移数据库出错


    今天迁移数据库的时候,报错:django.db.migrations.exceptions.MigrationSchemaMissing,下面是错误的详细信息:

     1 manage.py@xiaopixiu > migrate
     2 "D:Program FilesJetBrainsPyCharm 2017.2.2in
    unnerw.exe" C:UserssenyuAnaconda3envspy3.6.5python.exe "D:Program FilesJetBrainsPyCharm 2017.2.2helperspycharmdjango_manage.py" migrate C:/Users/senyu/Desktop/工作文件/xiaopixiu_v2.0/xiaopixiu
     3 System check identified some issues:
     4 
     5 WARNINGS:
     6 ?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
     7     HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/2.1/ref/databases/#mysql-sql-mode
     8 Operations to perform:
     9   Apply all migrations: admin, auth, authtoken, common, contenttypes, sessions
    10 Running migrations:
    11 Traceback (most recent call last):
    12   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsutils.py", line 83, in _execute
    13     return self.cursor.execute(sql)
    14   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsmysqlase.py", line 71, in execute
    15     return self.cursor.execute(query, args)
    16   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbcursors.py", line 250, in execute
    17     self.errorhandler(self, exc, value)
    18   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbconnections.py", line 50, in defaulterrorhandler
    19     raise errorvalue
    20   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbcursors.py", line 247, in execute
    21     res = self._query(query)
    22   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbcursors.py", line 411, in _query
    23     rowcount = self._do_query(q)
    24   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbcursors.py", line 374, in _do_query
    25     db.query(q)
    26   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbconnections.py", line 277, in query
    27     _mysql.connection.query(self, query)
    28 _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1")
    29 
    30 The above exception was the direct cause of the following exception:
    31 
    32 Traceback (most recent call last):
    33   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbmigrations
    ecorder.py", line 55, in ensure_schema
    34     editor.create_model(self.Migration)
    35   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsaseschema.py", line 312, in create_model
    36     self.execute(sql, params or None)
    37   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsaseschema.py", line 133, in execute
    38     cursor.execute(sql, params)
    39   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsutils.py", line 100, in execute
    40     return super().execute(sql, params)
    41   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsutils.py", line 68, in execute
    42     return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
    43   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsutils.py", line 77, in _execute_with_wrappers
    44     return executor(sql, params, many, context)
    45   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsutils.py", line 85, in _execute
    46     return self.cursor.execute(sql, params)
    47   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbutils.py", line 89, in __exit__
    48     raise dj_exc_value.with_traceback(traceback) from exc_value
    49   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsutils.py", line 83, in _execute
    50     return self.cursor.execute(sql)
    51   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbackendsmysqlase.py", line 71, in execute
    52     return self.cursor.execute(query, args)
    53   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbcursors.py", line 250, in execute
    54     self.errorhandler(self, exc, value)
    55   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbconnections.py", line 50, in defaulterrorhandler
    56     raise errorvalue
    57   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbcursors.py", line 247, in execute
    58     res = self._query(query)
    59   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbcursors.py", line 411, in _query
    60     rowcount = self._do_query(q)
    61   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbcursors.py", line 374, in _do_query
    62     db.query(q)
    63   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesMySQLdbconnections.py", line 277, in query
    64     _mysql.connection.query(self, query)
    65 django.db.utils.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1")
    66 
    67 During handling of the above exception, another exception occurred:
    68 
    69 Traceback (most recent call last):
    70   File "D:Program FilesJetBrainsPyCharm 2017.2.2helperspycharmdjango_manage.py", line 43, in <module>
    71     run_module(manage_file, None, '__main__', True)
    72   File "C:UserssenyuAnaconda3envspy3.6.5lib
    unpy.py", line 205, in run_module
    73     return _run_module_code(code, init_globals, run_name, mod_spec)
    74   File "C:UserssenyuAnaconda3envspy3.6.5lib
    unpy.py", line 96, in _run_module_code
    75     mod_name, mod_spec, pkg_name, script_name)
    76   File "C:UserssenyuAnaconda3envspy3.6.5lib
    unpy.py", line 85, in _run_code
    77     exec(code, run_globals)
    78   File "C:/Users/senyu/Desktop/工作文件/xiaopixiu_v2.0/xiaopixiumanage.py", line 15, in <module>
    79     execute_from_command_line(sys.argv)
    80   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangocoremanagement\__init__.py", line 381, in execute_from_command_line
    81     utility.execute()
    82   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangocoremanagement\__init__.py", line 375, in execute
    83     self.fetch_command(subcommand).run_from_argv(self.argv)
    84   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangocoremanagementase.py", line 316, in run_from_argv
    85     self.execute(*args, **cmd_options)
    86   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangocoremanagementase.py", line 353, in execute
    87     output = self.handle(*args, **options)
    88   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangocoremanagementase.py", line 83, in wrapped
    89     res = handle_func(*args, **kwargs)
    90   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangocoremanagementcommandsmigrate.py", line 203, in handle
    91     fake_initial=fake_initial,
    92   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbmigrationsexecutor.py", line 91, in migrate
    93     self.recorder.ensure_schema()
    94   File "C:UserssenyuAnaconda3envspy3.6.5libsite-packagesdjangodbmigrations
    ecorder.py", line 57, in ensure_schema
    95     raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)
    96 django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1"))

    Python版本为3.6.5, Django版本为2.1.7,,之前在本地迁移数据库的时候是很正常的,迁移到服务器上就报错,然后查看之后,发现本地数据库是5.7.22,服务端数据库版本为5.5.56,然后猜想为数据库版本问题,Django2.1生成的数据库语句和5.5版本的数据库不兼容.因此才会出现这样的错误.

    之后查看了Django的发行信息

    Djngo2.1只支持MySQL5.6(含)以上版本,所以确定就是MySQL版本问题.

    并且,官方宣布,Django2.0是最后一个支持3.4版本的Python,还好我Python版本比较新一些.建议大家以后使用新版的时候,事先阅读一下新版本的新特性.嗯,就是这样

  • 相关阅读:
    c++ stl algorithm: std::find, std::find_if
    mysql---多表关联
    使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象
    Nexon由Xsolla全球支付服务
    configure.ac:20: error: Autoconf version 2.65 or higher is required
    的无线通信网络的学习LTE的关键技术HARQ(20141217)
    JAVA 公众微信的开放源码项目管理合作伙伴招募的版本号
    【工具】JAVA 在单元读取文件并比较
    linux下如何编译python生成libpython2.5.so动态库
    将主机IDS OSSEC日志文件存入MYSQL的方法
  • 原文地址:https://www.cnblogs.com/kuoiea/p/10566153.html
Copyright © 2020-2023  润新知