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 > > > > >

