「作成された」タイムスタンプと「更新された」タイムスタンプを持つテーブルを作成しようとしています(そして、MySQLに値が自動的に挿入されます)。それは実行可能です。http://gusiev.com/2009/04/update-and-create-timestamps-with-mysql/を参照してください。
最初のステップとして、参照サイトからサンプルテーブルをコピーし、Workbenchでモデル化しました。次に、フォワードエンジニアを行い、結果のSQLをphpMyAdminでテストしました。すべてがうまくいった。SQLは次のとおりです。
-- -----------------------------------------------------
-- Table `test_table`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `test_table` ;
CREATE TABLE IF NOT EXISTS `test_table` (
`id` INT NOT NULL AUTO_INCREMENT ,
`stamp_created` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' ,
`stamp_updated` TIMESTAMP NULL DEFAULT now() on update now() ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
アイデアが機能することを確認した後、実際のテーブルの1つにコンセプトを実装しました。結果のSQLは次のとおりです。
-- -----------------------------------------------------
-- Table `user_login`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `user_login` ;
CREATE TABLE IF NOT EXISTS `user_login` (
`user_login_id` INT NOT NULL AUTO_INCREMENT ,
`user_id` INT NOT NULL ,
`hashed_password` CHAR(255) NULL ,
`provider_id` CHAR(255) NULL ,
`provider_name` CHAR(255) NULL ,
`unverified_email_address` CHAR(255) NULL ,
`verification_code_email_address` CHAR(255) NULL ,
`verification_code_password_change` CHAR(255) NULL ,
`verified_email_address` CHAR(255) NULL ,
`stamp_created` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' ,
`stamp_updated` TIMESTAMP NULL DEFAULT now() on update now() ,
`stamp_deleted` TIMESTAMP NULL ,
PRIMARY KEY (`user_login_id`) ,
INDEX `user_login_user_id` (`user_id` ASC) ,
UNIQUE INDEX `verified_email_address_UNIQUE` (`verified_email_address` ASC) ,
UNIQUE INDEX `unverified_email_address_UNIQUE` (`unverified_email_address` ASC) ,
CONSTRAINT `user_login_user_id`
FOREIGN KEY (`user_id` )
REFERENCES `user` (`user_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SQLを実行すると、次のエラーが発生します。
#1067 - Invalid default value for 'stamp_created'
誰かが私の問題の原因を知っていますか?