Also, since you have a lot of column, you may start with fewer column and
identify the exact column that trigger the error.

I will be easier to help you with simpler model, you then can generalize
after we had found the problem.

Richard

On Mon, Apr 23, 2012 at 11:10 AM, Richard Vézina <
[email protected]> wrote:

> It should not be the problem, but to make sure you set not null at the
> backend level you need : notnull=True if I remember.
>
> Richar
>
>
> On Mon, Apr 23, 2012 at 10:40 AM, Rakesh Singh 
> <[email protected]>wrote:
>
>> Hi,
>>
>> I am having a lot of trouble implementing on Oracle.
>> When I run my app on SQLite or MySQL, but I am having lots of different
>> errors on Oracle.
>> One problem I have is that when an error is returned, the application
>> hangs.
>> I can view the admin app and browse the error ticket, but the thread that
>> is doing the database operation seems to hang. I have to kill -9 and
>> restart.
>>
>> My 1st table created correctly, but my 2nd gave me errors with floats, so
>> I changed to decimal and finally integer, but I still get errors.
>> Again, on sqlite and MySQL, it works perfectly, so I'm not sure where the
>> problem could be.
>>
>> What I haven't done on the 2nd table is used the "requires" validators as
>> the user may not have all the required information during the capturing
>> process.
>>
>>
>> Error : DatabaseError: ORA-00910: specified length too long for its
>> datatype
>>
>> Traceback
>>
>>
>> Traceback (most recent call last):
>>   File "/data/source/dtos/web2py/gluon/restricted.py", line 205, in
>> restricted
>>     exec ccode in environment
>>   File "/data/source/dtos/web2py/applications/dtos/models/db.py", line
>> 470, in <module>
>>     label='Start Date'),
>>   File "/data/source/dtos/web2py/gluon/dal.py", line 6320, in define_table
>>     polymodel=polymodel)
>>   File "/data/source/dtos/web2py/gluon/dal.py", line 633, in create_table
>>     precision, scale = map(int,field.type[8:-1].split(','))
>> ValueError: invalid literal for int() with base 10: ''
>>
>>
>>
>>
>> Here is my model :
>>
>> db.define_table('DT_SARS_DECLARANT',
>>     Field('SECTION_ID',
>>         'string',
>>         length=1,
>>         default='B',
>>         required=True,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Section Identifier'),
>>     Field('RECORD_TYPE',
>>         'string',
>>         length=6,
>>         default='DD',
>>         required=True,
>>         #requires=[IS_UPPER(), IS_ALPHANUMERIC(), IS_NOT_EMPTY()],
>>         requires=[IS_UPPER(), IS_ALPHANUMERIC()],
>>         label='Record Type'),
>>     Field('RECORD_STATUS',
>>         'string',
>>         length=2,
>>         default='N',
>>         required=True,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Record Status',
>>         comment='''Indicates the status of the record, whether it is
>>         a new record, an adjusted record or a record that must be deleted
>>         from the declaration.'''),
>>     Field('UNIQUE_NUM',
>>         'string',
>>         required=True,
>>         requires=[IS_UPPER(), IS_ALPHANUMERIC(), IS_NOT_EMPTY()],
>>         label='Unique Number',
>>         comment='''The submitting entity’s system will have a unique
>>         identifier for each record. This is the number that must be
>> entered
>>         into this field.'''),
>>     Field('ROW_NUMBER',
>>         'integer',
>>         required=True,
>>         requires=IS_INT_IN_RANGE(0, 9999999999),
>>         label='Row Number',
>>         comment='''A sequential number to indicate the row number
>>         in the file.'''),
>>     Field('TRANS_DUE_DATE',
>>         'date',
>>         required=True,
>>         requires=IS_DATE(),
>>         label='Transaction Due Date',
>>         comment='This is the due date of the transactionthat pertains to
>> this record.'),
>>     Field('DIV_DECLARANT',
>>         'string',
>>         length=1,
>>         required=True,
>>         requires=[IS_NOT_EMPTY(), IS_UPPER()],
>>         label='Divident Declarant',
>>         comment='Indicates if the entity submitting the file also
>> declared the dividend for this record.'),
>>     # @TODO, There is a field that is missing in the Excel sheet.
>>     # Confirmation if this is not required, else, it will go here...
>>     Field('NATURE',
>>         'string',
>>         length=33,
>>         required=True,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Dividend Declarant: Nature Of Person',
>>         comment='The type/category of the divident declarant.'),
>>     Field('REG_NAME',
>>         'string',
>>         length=150,
>>         required=True,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Dividend Declarant: Registered Name',
>>         comment='The name of the divident declarant.'),
>>     Field('TRADE_NAME',
>>         'string',
>>         length=150,
>>         required=True,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Trading Name',
>>         comment='The name the devidend declaring entity is trading.'),
>>     Field('REG_NUM',
>>         'string',
>>         length=15,
>>         required=False,
>>         requires=[IS_UPPER(), IS_ALPHANUMERIC()],
>>         label='Registration Number',
>>         comment='The registration number of the divedent declaring
>> entity.'),
>>     Field('ISIN_NUM',
>>         'string',
>>         length=12,
>>         required=False,
>>         requires=[IS_UPPER(), IS_ALPHANUMERIC()],
>>         label='ISIN Number',
>>         comment='The international security identification number.'),
>>     # @TODO The following Income Tax number field is marked 'On
>> Announcemnt.
>>     # Confirmation required is this field is to be included. Is is for
>> now...
>>     Field('INC_TAX_NUM',
>>         'integer',
>>         required=False,
>>         requires=IS_INT_IN_RANGE(),
>>         label='Income Tax Reference Number',
>>         comment='The entity\'s income tax number as registered at SARS.'),
>>     Field('RSA_RES',
>>         'string',
>>         length=1,
>>         required=True,
>>         default='Y',
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Resident Of RSA',
>>         comment='Indicates if the dividend declaring entity is resident
>> in South Africa.'),
>>     Field('SHARES_LISTED',
>>         'string',
>>         length=1,
>>         required=True,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Shares Listed On JSE',
>>         comment='Indicates if the shares for which the dividend is
>> declared are listed on the JSE.'),
>>     Field('MICRO_BUS',
>>         'string',
>>         length=1,
>>         required=True,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Micro Business',
>>         comment='Indicates if the dividend declaring entity is registered
>> as a micro busines.'),
>>     Field('STC_CREDIT',
>>         'double',
>>         required=False,
>>         requires=IS_FLOAT_IN_RANGE(0, 999999999999999.99),
>>         label='Available STC Credit',
>>         comment='''This is the rolling balance of the STC credit that the
>> dividend declaring entity
>>         has available to utilise when dividend is declared.'''),
>>     Field('STC_CREDIT_UTIL',
>>         'double',
>>         required=False,
>>         requires=IS_FLOAT_IN_RANGE(0, 999999999999999.99),
>>         label='STC Credit Utilised',
>>         comment='The amount of STC credit that is utilised with this
>> declaration of dividend.'),
>>     Field('ENTITY_TYPE',
>>         'string',
>>         length=35,
>>         required=False,
>>         requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()],
>>         label='Entity Type',
>>         comment='The type/ category of the entity the dividend was
>> received from.'),
>>     Field('ENTITY_NAME',
>>         'string',
>>         length=150,
>>         required=False,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Entity Name',
>>         comment='The name of the entity the dividend was received from.'),
>>     Field('ENTITY_TRADE_NAME',
>>         'string',
>>         length=150,
>>         required=False,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Entity Registered Name',
>>         comment='The name the entity that the dividend was received from
>> is trading under.'),
>>     Field('ENTITY_REG_NUM',
>>         'string',
>>         length=15,
>>         required=False,
>>         requires=[IS_UPPER(), IS_ALPHANUMERIC(), IS_NOT_EMPTY()],
>>         label='Entity Registration Number',
>>         comment='The number of the entity that the dividend was received
>> from.'),
>>     # @TODO Field is highlighted. We will include it for now.
>>     Field('ENTITY_REF_NUM',
>>         'integer',
>>         required=False,
>>         requires=[IS_NOT_EMPTY(), IS_INT_IN_RANGE(0, 999999999999)],
>>         label='Entity Tax Reference Number',
>>         comment='The entity income tax number as registered at SARS.'),
>>     Field('ENTITY_REC_DATE',
>>         'date',
>>         required=False,
>>         requires=IS_DATE(),
>>         label='Entity Date Received',
>>         comment='The date on which the dividend was received by the
>> submitting entity.'),
>>     Field('DIV_TYPE',
>>         'string',
>>         length=2,
>>         required=True,
>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>         label='Divident Type',
>>         comment='This field indicates the type of dividend that is
>> declared/ received.'),
>>     Field('NUM_SHARES',
>>         'double',
>>         required=True,
>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0,
>> 999999999999999.999999)],
>>         label='Number Of Shares',
>>         comment='Number of shares or units to which the dividend
>> relates.'),
>>     Field('DIV_PER_SHARE',
>>         'double',
>>         required=True,
>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0,
>> 999999999999999.999999)],
>>         label='Dividend Per Share',
>>         comment='The dividend that is declared per share or unit.'),
>>     Field('DIV_VALUE',
>>         'double',
>>         required=True,
>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0,
>> 999999999999999.999999)],
>>         label='Divident Value',
>>         comment='The gross value of the dividend declared.'),
>>     Field('DATE_DECLARED',
>>         'date',
>>         required=True,
>>         requires=IS_DATE(),
>>         label='Date Declared',
>>         comment='The date the dividend was announced.'),
>>     Field('DATE_PAY',
>>         'date',
>>         required=True,
>>         requires=IS_DATE(),
>>         label='Date Paid/Payable',
>>         comment='The date on which the dividend was paid by the dividend
>> declaring entity.'),
>>     Field('STC_CREDIT_SHARE',
>>         'double',
>>         required=True,
>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0.000000,
>> 999999999999999.999999)],
>>         label='STC Credit Per Share',
>>         comment='''The portion of the dividend per share that should be
>> subtracted for STC credit.
>>         This value must be carried through to the recipient detail.'''),
>>     Field('MICRO_EXEMPT',
>>         'double',
>>         required=False,
>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0.00,
>> 999999999999999.99)],
>>         label='Micro Business Exemption',
>>         comment='The amount that can be claimed as allowable micro
>> business exemption.'),
>>     Field('IS_TAX_PAY',
>>         'double',
>>         required=False,
>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0.00,
>> 999999999999999.99)],
>>         label='IS Tax Payable',
>>         comment='The amount of tax paid to SARS in respect of In Specie
>> dividends.')
>>    )
>>
>>
>>
>> db.define_table('DT_SARS_RECIPIENT',
>>     Field('SECTION_ID',
>>         'string',
>>         length=1,
>>         required=True,
>>         label='Section Identifier'),
>>     Field('RECORD_TYPE',
>>         'string',
>>         length=6,
>>         required=True,
>>         label='Record Type'),
>>     Field('RECORD_STATUS',
>>         'string',
>>         length=2,
>>         required=True,
>>         label='Record Status'),
>>     Field('UNIQUE_NUM',
>>         'string',
>>         length=100,
>>         required=True,
>>         label='Unique Number'),
>>     Field('ROW_NUM',
>>         'integer',
>>         required=True,
>>         label='Row Number'),
>>     Field('TRANS_DUE_DATE',
>>         'date',
>>         required=True,
>>         requires=IS_DATE(),
>>         label='Transaction Due Date'),
>>     Field('DIV_UNIQUE_NUM',
>>         'string',
>>         length=100,
>>         required=True,
>>         label='Dividend Unique Number'),
>>     Field('DIV_TYPE',
>>         'string',
>>         length=2,
>>         required=True,
>>         label='Dividend Type'),
>>     Field('PERSON_LIABLE',
>>         'string',
>>         length=2,
>>         required=True,
>>         label='Person Liable For Tax'),
>>     Field('DIST_TYPE',
>>         'string',
>>         length='2',
>>         required=True,
>>         label='Distribution Type'),
>>     Field('NATURE_OF_PERSON',
>>         'string',
>>         length=33,
>>         required=True,
>>         label='Nature Of Person'),
>>     Field('FIRST_NAMES',
>>         'string',
>>         length=100,
>>         label='First Names'),
>>     Field('SURNAME_REGNAME',
>>         'string',
>>         length=125,
>>         label='Surname / Registered Name'),
>>     Field('TRADE_NAME',
>>         'string',
>>         length=150,
>>         label='Trading Name'),
>>     Field('TAX_RES',
>>         'string',
>>         length=3,
>>         label='Tax Residency'),
>>     Field('ID_TYPE',
>>         'string',
>>         length=3,
>>         label='Identification Type'),
>>     Field('ID_NUM',
>>         'string',
>>         length=30,
>>         label='Identification Number'),
>>     Field('CNTY_ISSUE',
>>         'string',
>>         length=3,
>>         label='Country of Issue'),
>>     Field('INC_TAX_REF',
>>         'integer',
>>         label='Income Tax Reference Number'),
>>     Field('DOB_INC',
>>         'date',
>>         label='Date Of Birth\/Inception'),
>>     Field('EXEMPT_CLAIM_PAR',
>>         'string',
>>         length=1,
>>         label='Exemption Claimed Under Par'),
>>     Field('DTA_RATE_REQ',
>>         'string',
>>         label='DTA Reduced Rate Requirements Met'),
>>     Field('DATE_PAY',
>>         'date',
>>         label='Date Paid\/Payable'),
>>     Field('NUM_SHARES',
>>         'integer',
>>         label='Number Of Shares'),
>>     Field('DIV_SHARE',
>>         'integer',
>>         label='Number Of Dividends Per Share'),
>>     Field('DIV_VALUE',
>>         'integer',
>>         label='Dividend Value'),
>>     Field('STC_SHARE',
>>         'string',
>>         length=22,
>>         label='STC Credit Per Share'),
>>     Field('MICRO_EXEMPT',
>>         'string',
>>         length=18,
>>         label='Micro Business Exemption'),
>>     Field('TAX_RATE_APPL',
>>         'string',
>>         length=5,
>>         label='Tax Rate Applicable'),
>>     Field('REBATE_FOREIGN',
>>         'integer',
>>         label='Rebate For Foreign Tax Paid'),
>>     Field('TAX_WITHHELD',
>>         'integer',
>>         label='Tax Withheld'),
>>     Field('NET_AMNT_BO',
>>         'integer',
>>         label='Net Amount Distributed To BO'),
>>     Field('CORP_ACT_ID',
>>         'integer',
>>         label='Corporate Action ID'),
>>     Field('SIN',
>>         'integer',
>>         length=25,
>>         label='SIN'),
>>     Field('SCA_NUM',
>>         'integer',
>>         label='SCA ID'),
>>     Field('BENEF_ACC_NUM',
>>         'integer',
>>         label='Beneficial Owner Account Number'),
>>     Field('DOC_REF',
>>         'integer',
>>         label='Document Reference Number'),
>>     Field('STATUS',
>>         'string',
>>         length=3,
>>         label='Status'),
>>     Field('START_DATE',
>>         'date',
>>         label='Start Date'),
>>
>>     )
>>
>>
>> Any idea what I could be missing to satisfy Oracle?
>>
>> Many thanks
>>
>> Rakesh
>>
>>
>>
>>
>>
>

Reply via email to