如何修复Laravel 5.3中的字段创建错误?

时间:2019-05-28 19:46:03

标签: php migration laravel-5.3

我有一个迁移,该迁移可以在本地无业游民服务器上正确创建表,但是当我尝试使用nginx在VPS上迁移时,会遇到奇怪的错误。

本地环境是Vagrant / homestead(我不知道OS,对不起),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

并且偏离路线,这是错误的,因为已经存在“ auto_increment主键”-第一个字段

预期结果-常规表创建。

我遇到错误:

“ [Illuminate \ Database \ QueryException]   SQLSTATE [42000]:语法错误或访问冲突:1067'actual'的默认值无效(SQL:创建表vicardsid int unsigned not   null auto_increment主键,visi_slug varchar(100)不为空,user_id int不为空,user_slug varchar(100)不为空,avatar varchar   (44)不为空默认值'0',header varchar(80)不为空,price varchar(12)不为空,description文本不为空,pictures文本为不空值,   videos文本不为空,contacts文本不为空,links文本不为空,styles文本不为空,actual tinyint不为空默认值'0'auto_inc   rement主键,created_at时间戳为空,updated_at时间戳为空)默认字符集utf8整理utf8_unicode_ci)“

此错误的原因是什么?请帮助我。

1 个答案:

答案 0 :(得分:0)

不要使用长度值,只需创建具有默认值的tinyint:

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