php - 使用现有数据库数据将不可空列添加到 laravel 迁移

标签 php mysql sqlite laravel laravel-4

我必须向已有数据的现有表中添加一个新列,但遇到了一些问题。

  1. 如何添加此列?它将成为一个 Not Nullable 字段。我现在可以用默认数据填充它并稍后返回并更新。所以如果我们需要在添加时删除约束。 我假设我将需要使用直接的 SQL 查询。

  2. 使用 PHPUnit 和 SQLite 进行这项工作,目前我收到错误 SQLSTATE[HY000]:一般错误:1 无法添加默认值为 NULL 的 NOT NULL 列(SQL:alter table "轨道”添加列“short_description”文本不为空)

我将如何修改此迁移?

public function up()
{
    Schema::table('tracks', function(Blueprint $table)
    {
        $table->text('short_description')->after('description');
    });
}

最佳答案

您必须设置默认值:

public function up()
{
    Schema::table('tracks', function(Blueprint $table)
    {
        $table->text('short_description')->after('description')->default('default_value');
    });
}

关于php - 使用现有数据库数据将不可空列添加到 laravel 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306460/

相关文章:

php - 动态下拉菜单

mysql - 如何通过mysql查询从考勤表中获取考勤报告?

android - 不存在这样的 acos 函数

php - Javascript .replace 在页面加载时被重写

php - Laravel 模型恢复事件

PHP 使用 DOM 解析器获取自定义属性值

sql - 给 MySQL 结果行编号

ruby - ActiveRecord 不会更新

ruby - 在 sqlite 中插入多行(带有自动递增的 ID 号)

php - 将页面内容放入输入值中不起作用