2016-07-05 1 views
0

を休止状態使用してMySQLのテーブルを作成することができません。それは、エラーアウト毎回、作成された文字列のクエリはMYSQLブラウザ上で正常に動作してもそうです。それに "とカラム名を持つテーブルを作成するクエリを実行しようとすると

SYSOUT createStmtに与える:executeUpdateの上

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(); 

このエラーアウト:

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ではキーワードである名前を選択しますが、リレーショナルマッパーは気にしません。データベースによってスローされたエラーは、マッパーによってラップされ、不明瞭になり、何が間違っていたかを知るには数時間を要します。

さらに、文字列をシリアル化する際の問題をエンコードすることを検討してください。特にWeb上で非ASCII文字を送信したり、ファイルからデータを読み込んだりすると、元の入力文字列が最終的にパイプからポップする文字列のように見えなくなる可能性が非常に高いです。

あなたのアプローチは重大な過失です。あなたのコードは、生産時ではなく、最初から破損していることをうれしく思います。

しかし、解決策を見つけるために、このことについてどのような:

次の列

s_label:VARCHAR(1024), 
t_value:LONGTEXT 

を有する第二のテーブルを作成し、元のテーブルからこのテーブルへの外部キーを追加します。ファイルの列名はs_labelに入り、好きな文字で自由に入力できます。

これは、テーブルのために少しオーバーヘッドかもしれませんが参加しますが、はるかに重要:それはきれいです:)

+0

マットに感謝、バックティックは私のためにトリックをしました。カラム名を囲むことはバックティックであるので、カラム名としてもキーワードを自由に使うことができます – user2176576

関連する問題