2016-07-05 53 views
0

嘗試執行其在它與一列名爲「一個創建表的查詢來創建MySQL表,似乎也出現了錯誤,每次,雖然創造串查詢工作在MYSQL瀏覽器的罰款。無法使用Hibernate

SYSOUT到createStmt給出:

Create table `myschema`.`flatTest_data_tbl`(`NAME` longtext,`TASK` longtext,`LO&"CATION` longtext) CHARACTER SET utf8 

SQLQuery createQuery = session.createSQLQuery(createStmt); 
     createQuery.executeUpdate(); 
     session.close(); 

它的錯誤出來的executeUpdate:

java.util.NoSuchElementException 
    at java.util.StringTokenizer.nextToken(StringTokenizer.java:349) 
    at org.hibernate.engine.jdbc.internal.BasicFormatterImpl$FormatProcess.perform(BasicFormatterImpl.java:142) 
    at org.hibernate.engine.jdbc.internal.BasicFormatterImpl.format(BasicFormatterImpl.java:91) 
    at org.hibernate.engine.jdbc.spi.SqlStatementLogger.logStatement(SqlStatementLogger.java:101) 
    at org.hibernate.engine.jdbc.spi.SqlStatementLogger.logStatement(SqlStatementLogger.java:95) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:180) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:91) 
    at org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:196) 
    at org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1313) 
    at org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:401) 
+0

在它引號中的列?你確定?如果你確定:你確定嗎?最後:爲什麼? –

+0

有一個要求,我們從平面文件中選擇列標題並將它們轉換爲mysql表,因此平面文件可以在其標題中包含雙引號,如果您有解決方案,請告知我:) – user2176576

+2

我認爲您正在使用規格有點太字面。如果你認真對待你的工作,那麼我的建議是不要這樣做。 –

回答

0

我承認採摘名字有時是一種恐怖,尤其是如果這些名稱正在PROC被幾種工具所隱藏。例如,您選擇某個DBMS中的關鍵字名稱,但您的關係映射器不在意。然後由數據庫引發的錯誤被映射器打包並遮蓋,您需要數小時才能找出您做錯了什麼。

此外,考慮串行化字符串時的編碼問題。特別是通過網絡發送非ASCII字符或從文件中讀取數據時,很可能您會發現原始輸入字符串看起來不像您最終從管道彈出的那個字符串。

由於這些原因,您的方法嚴重疏忽。要高興的是,您的代碼在一開始就不對,而不是在生產中。

然而,爲了找到解決的辦法,你看這個:

與下面的列

s_label:VARCHAR(1024), 
t_value:LONGTEXT 

創建第二個表,然後從您的原始表外鍵添加到該表。文件中的列名將進入s_label,您可以隨意使用您喜歡的任何字符填充它。

這可能是表連接一個小的開銷,但更重要的是:它的清潔:)

+0

感謝馬特,反提示爲我做了詭計。將列名稱反引號使我們可以自由地將關鍵字用作列名稱 – user2176576

相關問題