解决django migrate报错ORA-02000: missing ALWAYS keyword


Posted in Python onJuly 02, 2020

错误信息

解决django migrate报错ORA-02000: missing ALWAYS keyword

PS D:\parttime\python\django\guanxiangzhiji> python manage.py migrate
Operations to perform:
 Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Traceback (most recent call last):
 File "D:\app\anaconda\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
 return self.cursor.execute(sql)
 File "D:\app\anaconda\lib\site-packages\django\db\backends\oracle\base.py", line 510, in execute
 return self.cursor.execute(query, self._param_generator(params))
cx_Oracle.DatabaseError: ORA-02000: missing ALWAYS keyword

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
 File "D:\app\anaconda\lib\site-packages\django\db\migrations\recorder.py", line 67, in ensure_schema
 editor.create_model(self.Migration)
 File "D:\app\anaconda\lib\site-packages\django\db\backends\base\schema.py", line 307, in create_model
 self.execute(sql, params or None)
 File "D:\app\anaconda\lib\site-packages\django\db\backends\base\schema.py", line 137, in execute
 cursor.execute(sql, params)
 File "D:\app\anaconda\lib\site-packages\django\db\backends\utils.py", line 99, in execute
 return super().execute(sql, params)
 File "D:\app\anaconda\lib\site-packages\django\db\backends\utils.py", line 67, in execute
 return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
 File "D:\app\anaconda\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
 return executor(sql, params, many, context)
 File "D:\app\anaconda\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
 return self.cursor.execute(sql, params)
 File "D:\app\anaconda\lib\site-packages\django\db\utils.py", line 89, in __exit__
 raise dj_exc_value.with_traceback(traceback) from exc_value
 File "D:\app\anaconda\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
 return self.cursor.execute(sql)
 File "D:\app\anaconda\lib\site-packages\django\db\backends\oracle\base.py", line 510, in execute
 return self.cursor.execute(query, self._param_generator(params))
django.db.utils.DatabaseError: ORA-02000: missing ALWAYS keyword

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "manage.py", line 21, in <module>
 main()
 File "manage.py", line 17, in main
 execute_from_command_line(sys.argv)
 File "D:\app\anaconda\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
 utility.execute()
 File "D:\app\anaconda\lib\site-packages\django\core\management\__init__.py", line 375, in execute
 self.fetch_command(subcommand).run_from_argv(self.argv)
 File "D:\app\anaconda\lib\site-packages\django\core\management\base.py", line 323, in run_from_argv
 self.execute(*args, **cmd_options)
 File "D:\app\anaconda\lib\site-packages\django\core\management\base.py", line 364, in execute
 output = self.handle(*args, **options)
 File "D:\app\anaconda\lib\site-packages\django\core\management\base.py", line 83, in wrapped
 res = handle_func(*args, **kwargs)
 File "D:\app\anaconda\lib\site-packages\django\core\management\commands\migrate.py", line 234, in handle
 fake_initial=fake_initial,
 File "D:\app\anaconda\lib\site-packages\django\db\migrations\executor.py", line 91, in migrate
 self.recorder.ensure_schema()
 File "D:\app\anaconda\lib\site-packages\django\db\migrations\recorder.py", line 69, in ensure_schema
 raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (ORA-02000: missing ALWAYS keyword)

环境情况

1、操作系统:Win10 64bit

解决django migrate报错ORA-02000: missing ALWAYS keyword

2、Python版本:3.7.3

解决django migrate报错ORA-02000: missing ALWAYS keyword

3、django版本:2.2.4

解决django migrate报错ORA-02000: missing ALWAYS keyword

4、Oracle版本:11.2.0.4

解决django migrate报错ORA-02000: missing ALWAYS keyword

5、cx_oracle版本:7.0.0

解决django migrate报错ORA-02000: missing ALWAYS keyword

6、settings配置

解决django migrate报错ORA-02000: missing ALWAYS keyword

原因分析

从错误提示ORA-02000: missing ALWAYS keyword看,是SQL语法错误,创建表的时候使用了Always这个关键词。 Always是在Oracle12c的新特性自增序列里用到的,语法如下:

generated-column-spec
[ GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY 
[ ( START WITH IntegerConstant 
[ ,INCREMENT BY IntegerConstant] ) ] ] ]

但是,我机器上用的是Oracle11.2.0.4版本,这个语法在11g版本里执行自然就会报ORA-02000的错误。

解决方案

看了网上的一些解决方案,主要有2种:

(1)将Oracle升级到12c

(2)将cx_oracle降低版本

刚开始选用方案(2),觉得简单,但是实际操作下来,问题一环套一环,比如说将cx_oracle降低版本后,接着出现了django版本与cx_oracle版本不适应的情况,接着又降低django版本。。。接着做还是不行,最终放弃了。不知道有没有人成功过。

重新选择方案(1),装了Oracle12.1.0.2

解决django migrate报错ORA-02000: missing ALWAYS keyword

再将django和cx_oracle升级回最新版本,migrate的时候就成功了

解决django migrate报错ORA-02000: missing ALWAYS keyword

以上这篇解决django migrate报错ORA-02000: missing ALWAYS keyword就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python常见的格式化输出小结
Dec 15 Python
python正则实现计算器功能
Dec 14 Python
Python使用googletrans报错的解决方法
Sep 25 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
Django 重写用户模型的实现
Jul 29 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
python内打印变量之%和f的实例
Feb 19 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 Python
python开发的自动化运维工具ansible详解
Aug 07 Python
python playwrigh框架入门安装使用
Jul 23 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 #Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 #Python
python解释器安装教程的方法步骤
Jul 02 #Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 #Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 #Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 #Python
利用scikitlearn画ROC曲线实例
Jul 02 #Python
You might like
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
php中stream(流)的用法
2014/03/25 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
vue实现放大镜效果
2020/09/17 Javascript
Sanic框架基于类的视图用法示例
2018/07/18 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
django富文本编辑器的实现示例
2019/04/10 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
高中微机老师自我鉴定
2014/02/16 职场文书
中班开学寄语
2014/04/04 职场文书
运动会口号8字
2014/06/07 职场文书
2015年除四害工作总结
2015/07/23 职场文书
公司岗位说明书
2015/10/08 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
2019银行竞聘书
2019/06/21 职场文书
python如何在word中存储本地图片
2021/04/07 Python
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python