2011-10-21 83 views
-2
insert into tour_concerts values 
('1', to_date('02/08/1974', 'DD/MM/YYYY'), 'Misc Concerts', 'UK'), 

insert into tour_concerts values 
('2', to_date('01/01/1977', 'DD/MM/YYYY'), 'The Hoople North America Your', 'USA'), 

insert into tour_concerts values 
('3', to_date('05/09/1971', 'DD/MM/YYYY'), 'Sheer Heart Attack UK tour', 'UK'), 

insert into tour_concerts values 
('4', to_date('09/02/1972', 'DD/MM/YYYY'), 'Works Japan tour', 'Japan'), 

insert into tour_concerts values 
('5', to_date('03/10/1975', 'DD/MM/YYYY'), 'Magic Tour', 'UK'), 

insert into tour_concerts values 
('6', to_date('02/01/1974', 'DD/MM/YYYY'), 'Freddie Mercury Tribute Concert for AIDS Awareness', 'UK'); 

SQL> @tour_concerts1; 
('6', to_date('02/01/1974', 'DD/MM/YYYY'), 'Freddie Mercury Tribu 
te Concert for AIDS Awareness', 'UK') 
             * 

ERROR位於第2行:SQL Oracle錯誤

ORA-12899:值太大,列 「S3327043」 「TOUR_CONCERTS」。 「TYPE」(實際:50,最大:30)


有人可以幫我解決這個問題?


好吧,我已將它解決了

+2

SQL語句(如INSERT)必須以分號';'結尾; –

回答

0

錯誤是顯而易見的:TOUR_CONCERTS.TYPE字段允許30個字符,沒有了,你要插入一個更長的字符串。
你有兩種方法來解決這個問題:

你插入( Freddie Mercury的致敬音樂會艾滋病宣傳超過30個字符長)
  1. 縮短字符串
  2. 更改表的定義和設置TOUR_CONCERTS。類型字段長度到一個更高的值(說200?)
0

呃,我認爲你應該改變你的table.30太短。
如果你的數據庫是Oracle數據庫:

alter table YOURTABLE alter column 'S3327043' varchar(100) 
1

這個錯誤明顯,說明你想在tour_concerts表的第三列中插入過長VARCHAR值。

  1. 修改表的結構,以使列接受超過30個字符:

    你可以解決這個問題。例如,50是失敗語句的字符數。

    alter table tour_concerts modify column_name varchar2(50)

  2. 使用Oracle substr功能:

    `插入tour_concerts值( '6',TO_DATE('02/01/1974' , 'DD/MM/YYYY'),SUBSTR ('Freddie Mercury Tribute Concert for AIDS Awareness',0,30),'UK');

  3. 如果通過jdbc通過應用程序插入這些記錄,例如修剪用戶輸入以不超過表格的最大尺寸。

-1

檢查this article看來你的努力比外地插入較長的值,使字段以外也需要最大值更大。