Django2.1遷移數據庫出錯


今天遷移數據庫的時候,報錯:django.db.migrations.exceptions.MigrationSchemaMissing,下面是錯誤的詳細信息:

 1 manage.py@xiaopixiu > migrate
 2 "D:\Program Files\JetBrains\PyCharm 2017.2.2\bin\runnerw.exe" C:\Users\senyu\Anaconda3\envs\py3.6.5\python.exe "D:\Program Files\JetBrains\PyCharm 2017.2.2\helpers\pycharm\django_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:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
13     return self.cursor.execute(sql)
14   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\mysql\base.py", line 71, in execute
15     return self.cursor.execute(query, args)
16   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\cursors.py", line 250, in execute
17     self.errorhandler(self, exc, value)
18   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\connections.py", line 50, in defaulterrorhandler
19     raise errorvalue
20   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\cursors.py", line 247, in execute
21     res = self._query(query)
22   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\cursors.py", line 411, in _query
23     rowcount = self._do_query(q)
24   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\cursors.py", line 374, in _do_query
25     db.query(q)
26   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\connections.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:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\migrations\recorder.py", line 55, in ensure_schema
34     editor.create_model(self.Migration)
35   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\base\schema.py", line 312, in create_model
36     self.execute(sql, params or None)
37   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\base\schema.py", line 133, in execute
38     cursor.execute(sql, params)
39   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\utils.py", line 100, in execute
40     return super().execute(sql, params)
41   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\utils.py", line 68, in execute
42     return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
43   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
44     return executor(sql, params, many, context)
45   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
46     return self.cursor.execute(sql, params)
47   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\utils.py", line 89, in __exit__
48     raise dj_exc_value.with_traceback(traceback) from exc_value
49   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
50     return self.cursor.execute(sql)
51   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\backends\mysql\base.py", line 71, in execute
52     return self.cursor.execute(query, args)
53   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\cursors.py", line 250, in execute
54     self.errorhandler(self, exc, value)
55   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\connections.py", line 50, in defaulterrorhandler
56     raise errorvalue
57   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\cursors.py", line 247, in execute
58     res = self._query(query)
59   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\cursors.py", line 411, in _query
60     rowcount = self._do_query(q)
61   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\cursors.py", line 374, in _do_query
62     db.query(q)
63   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\MySQLdb\connections.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 Files\JetBrains\PyCharm 2017.2.2\helpers\pycharm\django_manage.py", line 43, in <module>
71     run_module(manage_file, None, '__main__', True)
72   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\runpy.py", line 205, in run_module
73     return _run_module_code(code, init_globals, run_name, mod_spec)
74   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\runpy.py", line 96, in _run_module_code
75     mod_name, mod_spec, pkg_name, script_name)
76   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\runpy.py", line 85, in _run_code
77     exec(code, run_globals)
78   File "C:/Users/senyu/Desktop/工作文件/xiaopixiu_v2.0/xiaopixiu\manage.py", line 15, in <module>
79     execute_from_command_line(sys.argv)
80   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
81     utility.execute()
82   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\core\management\__init__.py", line 375, in execute
83     self.fetch_command(subcommand).run_from_argv(self.argv)
84   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\core\management\base.py", line 316, in run_from_argv
85     self.execute(*args, **cmd_options)
86   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\core\management\base.py", line 353, in execute
87     output = self.handle(*args, **options)
88   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\core\management\base.py", line 83, in wrapped
89     res = handle_func(*args, **kwargs)
90   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\core\management\commands\migrate.py", line 203, in handle
91     fake_initial=fake_initial,
92   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\migrations\executor.py", line 91, in migrate
93     self.recorder.ensure_schema()
94   File "C:\Users\senyu\Anaconda3\envs\py3.6.5\lib\site-packages\django\db\migrations\recorder.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版本比較新一些.建議大家以后使用新版的時候,事先閱讀一下新版本的新特性.嗯,就是這樣

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM