0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】まだ間に合う!日本語入力で「???」になっても慌てないで

Posted at

前回無事にRDSに接続できたわし。
「なんかAWS理解できるようになっちゃってインフラのプロになれんじゃね?」
とかイキっておりました。
今回はそんなイキったやつが照合配列についてお勉強するお話です。

「え?日本語でおk?じゃないの??」

データ型さえ指定すれば文字列データ入れられるじゃんと考え、日本語でデータを入力してINSERTしたものの、、、
スクリーンショット 2023-03-06 210605.png

まさかの文字化け
データ型の指定やクエリも以前ローカルのサーバー使ったときと同じにしていたので、「なんでRDSだとおかしくなっちゃうん??」ってなりましたね。。

要デフォルト確認

そもそも論ですが、SQLServerとRDSではデフォルトの照合配列が異なっています
SQLServerではJapanese_CI_ASが、RDSではSQL_Latin1_General_CP1_CI_ASがデフォルトで設定されています。
SQL_Latin1_General_CP1_CI_ASについては日本語入力が対応していないため、日本語で文字列を入れると「??」になってしまっていたようなのです。
しかも、RDSの照合配列を決められるのはDBインスタンス作成時のみのため、作成後に「あ!!日本語のデータ入れないと!!」となってもインスタンス自体での変更はできないのです、、

いやーでもテーブル作った後にデータ型変更したくなることくらいあるよね??

なんとか変更くわえたいものやなあ。

データベースだけなら何とかなりそう

DBインスタンスは変更できないことがわかったので、データベースエンジン自体の設定をいじっていくことに。

SSMSに該当のインスタンスでログインしたら、オブジェクトエクスプローラーのツールタブから、「オプション」を選択。左側の一覧からデザイナー>テーブルデザイナー及びデータベースデザイナーを選択します。
次に、テーブルオプション画面で、赤で囲った箇所のチェックを外します。
スクリーンショット 2023-03-02 231105.png
タブを閉じたら、オブジェクトエクスプローラーからデータ型を変えたいデータベースを右クリックし、「プロパティ」を選択します。
左側の「オプション」を選択すると、照合配列を変更できる画面が表示されるので、ここからJapanese_CI_ASに変更します。

スクリーンショット 2023-03-02 232932.png
(選択肢多すぎてめっちゃ迷ったのここだけの話)

この時点で該当するデータベース自体の照合配列を変えることが可能になり、以降データベース上で作成されるテーブルの照合配列はJapanese_CI_ASとなります。

それでは、プロジェクト側からデータ型を変更していきます。
まずVisual Studioで該当プロジェクトを開き、表示>サーバーエクスプローラーから照合配列変更前に作ったテーブルを右クリックし、「テーブル定義」を選択します。スクリーンショット 2023-03-02 201224.png

CREATE文を記述した際に設定したテーブル定義がひょうじされるので、「COLLATE SQL_Latin1_General_CP1_CI_AS」の部分だけを消して更新ボタンを押します。

この状態でデバックを実行し、日本語のデータを入れると、
スクリーンショット 2023-03-06 210705.png
ああ・・!ちゃんと日本語入力が反映されておる・・!!

ミスったと思っても案外何とかなる

正直まだまだ勉強不足感強すぎて
「そもそもなんでインスタンスの照合配列はSQL_Latin1_General_CP1_CI_ASのままなのに日本語入力できたのか」
とかはまだ調べられていないのが現状です。

とはいえ、「やっちまったー」となっても、細々と調査を続けたことで対処方法がわかったのはわかったなあと思っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?