この投稿で説明されているように、TIMESTAMP DEFAULT CURRENT_TIMESTAMP
テーブルの列created_at
とschema.ymlにデフォルト値を設定しようとしてい ます。updated_at
システム情報:
- symfony 1.4.17、Doctrine 1
- MySQL 5.6.10
- PHP5.4
columnDefinitionのドキュメントを注意深く読みましたが、機能しませんでした。ドキュメントに記載されているようにcolumnDefinition
、列の名前の後に属性を設定する必要があります。columnDefinition
データベースの移行を行った後、これらの列に設定されたデフォルト値は MySQL データベースに追加されません。
type: timestamp
からへの変更をテストしましたtype: datetime
が、datetimeが認識されず、移行を実行すると、エラー メッセージが表示されます。ドキュメントでは、タイムスタンプ型に関するすべての参照は、次のように宣言する必要があることを示しています。timestamp
- http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/defining-models.html
- http://symfony.com/legacy/doc/doctrine/1_2/en/04-スキーマファイル
- https://doctrine.readthedocs.org/en/latest/en/manual/introduction-to-models.html
これらの列に値属性を追加することもテストしましたdefault
が、MySQL ではまだ設定されていません。
schema.yml:
Tbmdtest005:
connection: md_test
columns:
id:
type: integer(8)
fixed: false
unsigned: false
primary: true
autoincrement: true
actAs:
Timestampable:
created:
name: created_at
columnDefinition: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
default: CURRENT_TIMESTAMP
type: timestamp
format: Y-m-d H:i:s
options:
notnull: false
required: false
updated:
name: updated_at
columnDefinition: TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
default: CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
type: timestamp
format: Y-m-d H:i:s
options:
notnull: false
required: false
MySQL テーブル: tbmdtest005
移行後にデータベースに作成されます:
CREATE TABLE `tbmdtest005` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci
質問:
- schema.yml に何か問題がありますか?
- 実際の例を教えてください。