【问题标题】:How to fix error of field creation in Laravel 5.3?如何修复 Laravel 5.3 中的字段创建错误?
【发布时间】:2019-10-14 09:22:30
【问题描述】:

我有一个在本地流浪服务器上正确创建表的迁移,但是当我尝试使用 nginx 在 VPS 迁移时遇到奇怪的错误。

本地环境是 Vagrant/homestead(我不知道操作系统,抱歉),VPS 环境是 Debian 8,nginx。 Laravel 5.3 版 迁移要创建12个表,但是在结束过程之前遇到问题,所以只创建了10个表。顺便说一句,它表明 env 和其他设置是好的(我认为),只是在 1 个表中的 1 个字段是错误的

这是创建代码:

public function up()
    {
        Schema::create('vicards', function (Blueprint $table) {
            $table->increments('id');
            $table->string('visi_slug', 100);
            $table->unique('visi_slug', 'visi_slug_unique');
            $table->integer('user_id');
            $table->index('user_id', 'cards_user_id_index');
            $table->string('user_slug', 100);
            $table->index('user_slug', 'cards_user_slug_index');
            $table->string('avatar', 44)->default(0);
            $table->string('header', 80);
            $table->string('price', 12);
            $table->text('description');
            $table->text('pictures'); // 5 pics * 20 symbols + 4 commas
            $table->text('videos'); // 3 videos * 41 symbols + 2 commas
            $table->text('contacts'); //
            $table->text('links'); // links separated by commas
            $table->text('styles'); // object serialized
            $table->tinyInteger('actual', 1)->default(0);
            $table->timestamps();
        });
    }

问题调用此字段

$table->tinyInteger('actual', 1)->default(0);

工匠将其解释为:

 `actual` tinyint not null default '0' auto_increment primary key

当然这是错误的,因为“自动增量主键”已经存在 - 第一个字段

预期结果 - 定期创建表。

我收到错误:

" [照亮\数据库\查询异常] SQLSTATE [42000]:语法错误或访问冲突:1067 '实际'的默认值无效(SQL:创建表vicardsid int unsigned not null auto_increment 主键,visi_slugvarchar(100) 不为空,user_idint 不为空,user_slugvarchar(100) 不为空,avatarvarchar (44) not null default '0', header varchar(80) not null, price varchar(12) not null, description text not null, pictures text not null, videos 文本非空,contacts 文本非空,links 文本非空,styles 文本非空,actualtinyint 非空默认 '0' auto_inc rement 主键,created_attimestamp null,updated_attimestamp null) 默认字符集 utf8 collat​​e utf8_unicode_ci)"

这个错误的原因是什么?请帮帮我。

【问题讨论】:

    标签: php migration laravel-5.3


    【解决方案1】:

    不要使用长度值,只使用默认值创建 tinyint:

    $table->tinyInteger('actual')->default(0);
    

    【讨论】:

    • 谢谢!我用你的指示,它救了我。多谢!
    • 附注@Martin 我对您的回答 +1,但我的声誉不足以提供视觉效果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2021-01-05
    • 2019-10-23
    • 1970-01-01
    • 2017-05-30
    相关资源
    最近更新 更多