2

この投稿で説明されているように、TIMESTAMP DEFAULT CURRENT_TIMESTAMPテーブルの列created_atschema.ymlにデフォルト値を設定しようとしてい ます。updated_at

システム情報:

  • symfony 1.4.17Doctrine 1
  • MySQL 5.6.10
  • PHP5.4

columnDefinitionのドキュメントを注意深く読みましたが、機能しませんでした。ドキュメントに記載されているようにcolumnDefinition、列の名前の後に属性を設定する必要があります。columnDefinitionデータベースの移行を行った後、これらの列に設定されたデフォルト値は MySQL データベースに追加されません。

type: timestampからへの変更をテストしましたtype: datetimeが、datetimeが認識されず、移行を実行すると、エラー メッセージが表示されます。ドキュメントでは、タイムスタンプ型に関するすべての参照は、次のように宣言する必要があることを示しています。timestamp

これらの列に値属性を追加することもテストしました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 に何か問題がありますか?
  • 実際の例を教えてください。
4

0 に答える 0