我收到標題中提到的錯誤。ora-00972標識符太長oracle 10g
我正在使用36字符標識。這個錯誤只在我的asp.net webform的sqldatasource中拋出。 當我在Oracle sql developer
中執行更新時,這不是問題。
我該如何解決這個問題?
我收到標題中提到的錯誤。ora-00972標識符太長oracle 10g
我正在使用36字符標識。這個錯誤只在我的asp.net webform的sqldatasource中拋出。 當我在Oracle sql developer
中執行更新時,這不是問題。
我該如何解決這個問題?
Oracle支持最多30個字符的標識符,並且您的標識符長度36
大於該值,因此使其長度爲30個字符。
看到這個link
如果你成功地從另一種環境中執行的DML(UPDATE表名SET ...),如SQL開發人員,那麼你的asp.net代碼必須以某種方式指定或構建表的名稱或表格的列名稱不正確。如果Oracle在任何其他檢查之前將它們解析爲> 30個字符,它將拋出此異常。
正如Srinivas指出的那樣,最大長度是30,所以36個字符的標識符不能從SQL Developer工作 - 您能發佈SQL Developer中「工作」的語句嗎?
SERVICE_ID NVARCHAR2(36)NOT NULL
配置爲使用多字節字符您的SQL Developer設置?瘋狂的猜測,特別是因爲我期望拋出ORA-12899: value too large for column
而不是ORA-00972。
啊,我明白了 - 它不是那個長度爲36個字符的列名,而是實際的數據。很高興我們清除了一個。關於「爲什麼這是從ASP.NET SqlDataSource發生的」,我懷疑在這個行的某處有一個在ASCII和Unicode之間轉換的問題。 NVARCHAR2是Unicode,但我懷疑某些東西在Unicode世界中播放不好。看看你的網絡服務器,你的客戶端,你的數據庫,任何你能想到的東西 - 我懷疑你會發現在那裏有一個ASCII客戶端,不會正確地說Unicode,而且會混淆關於Unicode字符串的長度(32個Unicode字符佔用64個字節(假設UTF-16))。
好運。
我讀到了,但正如我所說我能夠從Oracle SQL開發人員更新而不會出現該錯誤? – Frank 2010-05-07 11:23:45