この質問は以前に回答されたことがあるかもしれませんが、私はそれを見つけることができませんでした。
列名にハイフンが含まれている2/3年前のMySQLデータベースを使用しています。 Javaコードからこれらの名前を使用しようとすると、名前がハイフンで壊れているため(たとえば、air_portがairになります)、見つかりません。コード内でハイフンをアンダースコアに置き換えてみました。 DBはそれらを同等に扱うかもしれませんが、それは機能しません。
ハイフンをエスケープするにはどうすればよいですか、またはこれらの列にアクセスするにはどうすればよいですか?これは、使用されている文字セットの問題でしょうか?
名前を `back-ticks`で囲みます
列名にハイフン(-)またはアンダースコア(_)が含まれていますか?
列名を変数にマッピングすることになった場合、ほとんどの言語は変数名の中にハイフンを含めることを好まないため、ハイフンは大きな問題です。おそらく、列名に基づいた名前の変数またはオブジェクトを自動的に生成するJavaライブラリの1つを使用しています。
問題の性質に応じて、使用できるいくつかの異なるアプローチがあります。
これらはどれも優れたソリューションではありませんが、開始する必要があります。幸運を!
データベース名のハイフンも適切ではありません。しかし、バッククォートのトリックでそれらを使用することができます `
`name-with-hyphen`
列名にハイフンを使用しないことをお勧めします。 JOINステートメントで大きな問題が発生し、ハイフンが大きな問題を引き起こしました。バックティックで名前をエスケープしても機能しませんでした。
アンダースコアを使用するように列名を変換します。これが最も安全な方法です。
Pre-ca_dbという名前のデータベースを作成する必要がありました。
私は問題を解決しました
create database `pre-ca_db`;
幸運を!