5

mysql エラー 1293 のメッセージは次のとおりです。

SQL エラー (1293): テーブル定義が正しくありません。DEFAULT または ON UPDATE 句で CURRENT_TIMESTAMP を持つ TIMESTAMP 列は 1 つだけ存在できます

mysql が、テーブルごとに DEFAULT または ON UPDATE 句で CURRENT_TIMESTAMP を持つ 1 つの TIMESTAMP 列のみを許可する理由は何ですか。

4

1 に答える 1

9

「現在」にデフォルト設定できる TIMESTAMP フィールドは 1 つだけです。最初に言っておきますが、CURRENT_TIMESTAMP または「現在デフォルト」を使用して複数の MySQL TIMESTAMP フィールドを定義しようとしている場合、残念ながらそれは好ましくありません。MySQL では実行できません。 次のようなテーブルを作成しようとすると、この MySQL TIMESTAMP エラーが発生しました。

create table users (
    id int unsigned auto_increment not null primary key,
    username varchar(50) not null unique,
    password varchar(40) not null,
    email_address varchar(128) not null unique,
    email_sent timestamp not null,
    last_login timestamp not null default now()
    ) ENGINE = InnoDB;

この問題を最初に解決したとき、MySQL では「CURRENT_TIMESTAMP (デフォルトでは現在)」フィールドを他の TIMESTAMP フィールドの前に宣言する必要があると考えたので、次のように問題を解決しました。

create table users (
   id int unsigned auto_increment not null primary key,
   username varchar(50) not null unique,
   password varchar(40) not null,
   email_address varchar(128) not null unique,
   last_login timestamp not null default now(),
   email_sent timestamp not null
 ) ENGINE = InnoDB;
于 2012-11-02T09:59:51.330 に答える