カテゴリ: 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
コメントを残す