Thank you Richard. I shall try your suggestions this morning.
On Monday, 23 April 2012 17:12:36 UTC+2, Richard wrote: > > 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 >>> >>> >>> >>> >>> >> >

