デフォルトの時間を timestamp
に変更する必要がある場合 あなたのデータ型で、
datetime
テーブルのユーザー入力を表示しようとしています...
http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
DEFAULT CURRENT_TIMESTAMP
のように 質問には既に回答があります。Windows と Linux の間のテーブル名の大文字と小文字の区別の不一致にのみ回答します。
Windows では、ファイル システムはデフォルトで大文字と小文字を区別しません。
ただし、Linux やその他の *NIX のようなオペレーティング システムでは、デフォルトで大文字と小文字が区別されます。
ここで動作が一致しない理由は、ファイル システムにあります。各テーブルは個別のファイルとして作成され、ファイル システムは大文字と小文字の区別を処理します。
MySQL には、この動作をオーバーライドするパラメーターがあります:
<ブロック引用>
たとえば、Unix では、my_table
という名前の 2 つの異なるテーブルを持つことができます。 と MY_TABLE
ですが、Windows ではこれら 2 つの名前は同一と見なされます。データベースまたはテーブル名の大文字と小文字が原因で発生するデータ転送の問題を回避するには、次の 2 つのオプションがあります。
-
lower_case_table_names=1
を使用 すべてのシステムで。これの主な欠点は、SHOW TABLES
を使用する場合です またはSHOW DATABASES
、元のレターケースでは名前が表示されません。 -
lower_case_table_names=0
を使用 Unix およびlower_case_table_names=2
の場合 Windows で。これにより、データベース名とテーブル名の大文字と小文字が保持されます。これの欠点は、ステートメントが常にデータベースとテーブル名を Windows で正しい文字で参照するようにしなければならないことです。大文字と小文字が重要な Unix にステートメントを転送する場合、大文字と小文字が正しくないと機能しません。
例外: InnoDB テーブルを使用していて、これらのデータ転送の問題を回避しようとしている場合は、lower_case_table_names=1
を設定する必要があります すべてのプラットフォームで、名前を小文字に変換することを強制します。
[...]
このような違いによる問題を回避するには、常に小文字の名前を使用してデータベースとテーブルを作成および参照するなど、一貫した規則を採用することをお勧めします .この規則は、移植性と使いやすさを最大限に高めるために推奨されます。
これは、識別子の大文字と小文字の区別に関する MySQL マニュアルからの抜粋です
DEFAULT CURRENT_TIMESTAMP
DATETIME
のサポート (データ型) は MySQL 5.6 で追加されました。
5.5 以前のバージョンでは、これは TIMESTAMP
にのみ適用されました。 (データ型) 列。
BEFORE INSERT
を使用することが可能です 5.5 でトリガーして、列にデフォルト値を割り当てます。
DELIMITER $$
CREATE TRIGGER ...
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
IF NEW.mycol IS NULL THEN
SET NEW.mycol = NOW();
END IF;
END$$
(列に格納された値に対するクエリの) 大文字と小文字の区別は、 collation
によるものです コラムに使用。 _ci
で終わる照合順序 大文字と小文字を区別しません。例:latin1_swedish_ci
大文字と小文字は区別されませんが、latin1_general_cs
大文字と小文字が区別されます。
SHOW CREATE TABLE foo
からの出力 文字タイプ列の文字セットと照合順序が表示されます。これは、列ごとのレベルで指定されます。テーブル レベルで指定された「デフォルト」は、新しい列の定義で文字セットが指定されていない場合に、テーブルに追加された新しい列に適用されます。
更新
Kaii は、「大文字と小文字の区別」に関する私の回答は、列に格納された値を扱い、クエリが "New"
の値を含む列から値を返すかどうかを指摘しました。 "t.col = 'new'"
のような述語で返されます .
識別子に関するカイイの回答を参照してください (テーブル名など) は、Windows と Linux では (デフォルトで) 異なる方法で処理されます。