yii2 - 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);
解决方案
如果 64 KB 对您来说足够了,您可以使用text()
:
'bodytext' => $this->text()
如果你真的需要一个长文本列,你应该使用类似的东西:
'bodytext' => $this->getDb()->getSchema()->createColumnSchemaBuilder('longtext');
或将类型指定为原始字符串:
'bodytext' => 'LONGTEXT',
推荐阅读
- java - 使用 Spark 将 Teradata 导出到 HDFS 因假脱机空间而失败
- r - 如何在 r 中创建多个 pivot_longer() 列?
- javascript - JSON.parse 中位置 0 处的 JSON 中的意外标记 J (
) 在 __webpack_exports__.default (webpack-internal:///./pages/api/mail.js:4:21) - javascript - Socket IO:如何在客户端和第二个服务器之间建立连接?
- python - tkinter 在 3 列布局中可折叠使列跳跃
- python-3.x - 我有一些代码在 2 秒内运行 100 次迭代,在 8 秒内运行 1000 次,在 11 分钟内运行 10,000 次
- drag-and-drop - 使用 React dnd 进行嵌套拖放
- python - 如何在 Python 中将两个列表组合成一个字典?
- python - 当我点击'tab'时,python函数的参数不会出现
- python - 如何用熊猫绘制每日平均值?