3

次のSQLを使用してデータベーステーブルを作成しています。

CREATE  TABLE `cs3_ds1` (
`ID` INT NOT NULL ,
`TIME` TIMESTAMP NOT NULL ,
`USER` VARCHAR(45) NOT NULL ,
`TIME1` TIMESTAMP NOT NULL ,
`TIME2` TIMESTAMP NOT NULL ,
`INSERT_TIME` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
 PRIMARY KEY (`ID`) )
 ENGINE = InnoDB

現在のタイムスタンプを1つの列でのみデフォルトとして使用していますが、次のエラーが発生します。

ERROR 1293: Incorrect table definition; there can be only one TIMESTAMP column with    CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

なぜこのエラーが発生するのですか?

4

3 に答える 3

10

MySQLはTIMESTAMP列をDEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPで自動初期化するため、最初の列TIMEにはデフォルトとしてCURRENT_TIMESTAMPが追加されています。したがって、明示的にDEFAULTを列に追加するときには、すでに1つ存在しています。列が定義される順序を変更する必要があります。

CREATE  TABLE `silas`.`cs3_ds1` (
`ID` INT NOT NULL ,
`INSERT_TIME` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
`TIME` TIMESTAMP NOT NULL ,
`USER` VARCHAR(45) NOT NULL ,
`TIME1` TIMESTAMP NOT NULL ,
`TIME2` TIMESTAMP NOT NULL ,
 PRIMARY KEY (`ID`) )
 ENGINE = InnoDB

または、他のタイムスタンプ列にデフォルトを追加します。

CREATE  TABLE `silas`.`cs3_ds1` (
`ID` INT NOT NULL ,
`TIME` TIMESTAMP NOT NULL DEFAULT 0,
`USER` VARCHAR(45) NOT NULL  DEFAULT 0,
`TIME1` TIMESTAMP NOT NULL DEFAULT 0 ,
`TIME2` TIMESTAMP NOT NULL DEFAULT 0 ,
`INSERT_TIME` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
 PRIMARY KEY (`ID`) )
 ENGINE = InnoDB

詳細については、MySQLDocsを参照してください。

于 2012-06-14T11:40:48.913 に答える
3

MYSQLのバージョンを確認してください。MYSQLのバージョンは5.6以外のものである可能性があります。この問題は、MYSQLバージョン5.5の制限が原因で発生しています。バージョンを5.6に更新する必要があります。

以下は私がこの問題をどのように尋ねたかです

MYSQLでテーブルを追加するときにこのエラーが発生していました

テーブル定義が正しくありません。DEFAULTまたはONUPDATE句にCURRENT_TIMESTAMPを含むTIMESTAMP列は1つだけです。新しいMYSQLテーブルは次のようになります。

テーブルtable_nameを作成します(col1 int(5)auto_increment主キー、col2 varchar(300)、col3 varchar(500)、col4 int(3)、col5 tinyint(2)、col6タイムスタンプデフォルトcurrent_timestamp、col7タイムスタンプデフォルトcurrent_timestamp on update current_timestamp、 col8 tinyint(1)デフォルト0、col9 tinyint(1)デフォルト1); さまざまなMYSQLバージョンの変更といくつかのグーグルについて読んだ後。バージョン5.5よりもMYSQLバージョン5.6でいくつかの変更が加えられていることがわかりました。

この記事は、問題の解決に役立ちます。http://www.oyewiki.com/MYSQL/Incorrect-table-definition-there-can-be-only-one-timestamp-column

于 2016-10-14T02:25:17.563 に答える
0

最近このエラーも発生しましたが、これはPHP5.6.5未満を実行しているためです。PHP 5.6.5のドキュメントによると、この制限は解除されました。

以前は、テーブルごとに最大1つのTIMESTAMP列が自動的に初期化されるか、現在の日時に更新されていました。この制限は解除されました。すべてのTIMESTAMP列定義には、DEFAULTCURRENT_TIMESTAMP句と
ONUPDATECURRENT_TIMESTAMP句の任意の組み合わせを含めることができます。さらに、これらの句をDATETIME列定義で使用できるようになりました。詳細については、TIMESTAMPおよびDATETIMEの自動初期化と更新を参照してください。

詳細については、MySQLのドキュメントを参照してください。特に、次のリンクをたどる場合は、「データ型ノード」セクションの下にあります。MySQL5.6.5での変更

于 2014-05-29T20:06:45.913 に答える