テーブル名で大文字・小文字の区別をしているか確認するには ( MySQL ・ SQLServer ・ PostgreSQL ・ SQLite ) | MySQL | みどりのウェブ開発日記

テーブル名で大文字・小文字の区別をしているか確認するには ( MySQL ・ SQLServer ・ PostgreSQL ・ SQLite )

カテゴリ: MySQL, SQL Server

記事投稿日: 2014年10月22日



SQLを発行する際、小文字でテーブル名を書くことに慣れていると、
他サーバからテーブルをインポートした際、元のテーブル名が大文字だと
テーブルが見つからず、エラーとなることがあります。

管理面からも、大文字、小文字を区別して、同名のテーブルができてしまったりするのは
望ましくないので、大文字・小文字を区別しない設定にするのが一般的だと思います。

以下は、テーブルが見つからないときの、大文字、小文字を区別する設定の
確認方法です。

・MySQL
以下のSQLを実行
show variables where variable_name=’lower_case_table_names’;

<返り値>
0…大文字小文字を区別
1…大文字小文字を区別しない(テーブル名をすべて小文字にして格納)
2…大文字小文字を区別しない(テーブル名をそのまま格納)

1が望ましいと思います。
Linuxでは2はないそうです。
また、既存テーブルは、設定を変更して再起動しても変わらないので再作成が必要です。

 

・SQLServer
ストアド プロシージャ sp_server_info を実行してから、
行 18 の内容を調べる。
大文字と小文字を区別しない設定でサーバーがインストールされている場合は、
sort_order のオプションが nocase に設定されている

 

Postgre と SQLite は少し異なります。

・PostgreSQL
テーブル名に大文字を使うときはダブルクォーテーションで囲む
select * from “SAMPLE_TABLE”

 

・SQLite
テーブル名の大文字、小文字は区別しない

PHPでPDOを使っていても、テーブル名の設定によってはSQLに変更が
必要だったりするので、注意が必要ですね。
個人的には、大文字、小文字の区別を有効にし、
小文字で統一したいところです。

<参考サイト>

http://huge.mints.ne.jp/01/2014/it_technique/735/

http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names

http://msdn.microsoft.com/ja-jp/library/aa290124%28v=vs.71%29.aspx#dvmsccasesensitivity

http://devlights.hatenablog.com/entry/20080223/p1








コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA




トップに戻る