首页 > 解决方案 > Yii2迁移中如何设置数据类型为longtext

问题描述

我使用以下代码来获取所需的属性值bodytext。数据类型应该是longtext()or varchar()。DBMS 是 MySQL。

使用以下代码bodytext将创建为varchar(255). 为什么?

$this->createTable('mail_eingang', [
    'id' => $this->primaryKey(),
    'mail_adresse_absender' => $this->string(255)->notNull(),
    'betreff' => $this->string(255),
    'bodytext' => $this->string(), //this will actually set bodytext to varchar(255). It should be longtext() or varchar() !!
    'gelesen' => $this->smallInteger(1)->notNull()->defaultValue(0),
    'angelegt_am' => $this->datetime(),
    'angelegt_von' => $this->integer(11),
    'aktualisiert_am' => $this->datetime(),
    'aktualisiert_von' => $this->integer(11),
    'FOREIGN KEY ([[angelegt_von]]) REFERENCES person ([[id]]) ON DELETE SET NULL ON UPDATE RESTRICT',
    'FOREIGN KEY ([[aktualisiert_von]]) REFERENCES person ([[id]]) ON DELETE SET NULL ON UPDATE RESTRICT',
], $tableOptions);

标签: yii2database-migration

解决方案


如果 64 KB 对您来说足够了,您可以使用text()

'bodytext' => $this->text()

如果你真的需要一个长文本列,你应该使用类似的东西:

'bodytext' => $this->getDb()->getSchema()->createColumnSchemaBuilder('longtext');

或将类型指定为原始字符串:

'bodytext' => 'LONGTEXT',

推荐阅读