![](/img/trans.png)
[英]H2 org.h2.jdbc.JdbcSQLException with correct DDL sql : error code = [42000-196]
[英]H2 - (Quite) long INSERT failing with error 42000
H2 內存中 - 插入 - 錯誤 42000
嘗試了 1.4.196、1.4.197、1.4.199 版本。
我還嘗試在 H2 服務器(本地)上執行 INSERT:也失敗了
給出錯誤的行:(抱歉,出於安全原因,我無法生成更多):
INSERT INTO tb_ae (server, record_id, ...)
SELECT ...
FROM vw_ofch_prepal_delta, vw_ab_bie
WHERE bie_tp IN ('S[*]') AND is_most_recent = 1;
該語句的長度為 4.004 個字符。
該錯誤由 H2 指出為 [*](這不是語句的一部分)。
根據H2錯誤代碼文檔,查詢中存在語法錯誤。
/**
* The error with code <code>42000</code> is thrown when
* trying to execute an invalid SQL statement.
* Example:
* <pre>
* CREATE ALIAS REMAINDER FOR "IEEEremainder";
* </pre>
*/
public static final int SYNTAX_ERROR_1 = 42000;
由於您的查詢時間太長,無法完全復制。 我建議再次查看查詢,否則可能會被其他人查看。 您應該為表名創建一個小的別名,並為每個列名使用別名,以避免語法錯誤。
H2不在字符串文字中設置錯誤標記[*]
。 這意味着您很可能在更早的位置放錯了'
字符。 它可以是一個未閉合的字符串中,未轉義'
在一些字符串文字字符(如果文字串包含'
字應該有兩個這樣的字符被寫為''
),或雜散'
字符。
如果您錯誤地編寫了插入內容,也可能發生這種情況
insert into `my_table` (`id`, `name`)
values (1, 'ENTITY_1'),
values (2, 'ENTITY_2');
粗心地復制和粘貼“值”兩次可能對眼睛來說並不明顯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.