django从sqlite3迁移到oracle导致ora-2000错误

时间:2018-02-09 19:49:15

标签: python django oracle

我在Windows服务器2012上安装了一个Django应用程序,该应用程序使用sqlite3作为数据库进行设置,但它已投入生产,因此我将表格迁移到服务器上的oracle 11g,我不知道#39; t只关心表中的数据所以当我运行时

    python manage.py migrate

我收到ORA-2000错误:缺少ALWAYS关键字

我是django和网站的新手,我缺少什么?

数据库设置:

    DATABASES = {
'default': {
    'ENGINE':   'django.db.backends.oracle',
    'NAME':     'orcl',
    'USER':     'hr',
    'PASSWORD': 'hr',
    'HOST': 'localhost',
    'PORT': '1521',
       },
   'OPTIONS': {
    'timeout': 20,
    'threaded': True,
}}

型号:

class ForecastSummary(models.Model):


party=models.ForeignKey(PartyDetailsFinal,on_delete=models.CASCADE,null=True)
annual_price = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                   null=True)
annual_HW = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                null=True)
annual_SW = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                null=True)
annual_total = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                   null=True)
back_maintenance = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'),
                                       blank=True )
forecast_year0 = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                     null=True)
forecast_year1 = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                     null=True)
forecast_year2 = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                     null=True)
forecast_year3 = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                     null=True)
forecast_year4 = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                     null=True)
forecast_year5 = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'), blank=True,
                                     null=True)
forecast_total_0to3_years = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'),
                                                blank=True )
forecast_total_0to5_years = models.DecimalField(max_digits=100, decimal_places=5, default=Decimal('0.00000'),
                                                blank=True )

def __str__(self):
    return "Instance Number =" + str(self.party.item_instance_number)

1 个答案:

答案 0 :(得分:0)

我在12.2.0.1数据库上尝试了你的CREATE TABLE语句,但它确实有效。另见this question。您可以使用明确支持Oracle DB版本的cx_oracle版本,也可以将数据库升级到Oracle 12。