文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

ERMaster:カラムに文字コードを設定する

インデックスの制約上やりたくなる時があるんですよね〜


f:id:treeapps:20180418131549p:plain

ERMasterでカラムに文字コードを設定します。

列情報ウインドウの詳細タブの「カラムの制約」の部分に「character set ascii」等と書くと、DDL出力すると以下のようになります。

CREATE TABLE SYNONYM
(
	SEQ INT UNSIGNED NOT NULL AUTO_INCREMENT,
	WORD TEXT character set ascii,
	PRIMARY KEY (SEQ)
) ENGINE = InnoDB DEFAULT CHARACTER SET utf8;

1点だけ注意する事があります。カラムがnot nullの場合、not nullチェックボックスをオンにしてしまうと、Syntax error になってしまいます。

CREATE TABLE SYNONYM
(
	SEQ INT UNSIGNED NOT NULL AUTO_INCREMENT,
	WORD TEXT NOT NULL character set ascii,
	PRIMARY KEY (SEQ)
) ENGINE = InnoDB DEFAULT CHARACTER SET utf8;
</pre>

<span class="feature3">NOT NULLはcharacter setより後ろに定義しないと構文エラーになる</span>のです。

これを解決するには、ちょっと嫌だけど、「カラムの制約」の部分に「character set ascii <span class="feature1">not null</span>」等と書けば大丈夫です。

これで物理的に対応できない、という事態は避けられますね。