使用php artisan migrate创建单个表

时间:2018-03-06 11:14:05

标签: laravel

我已经执行了这个命令来创建一个'用户'表:

php artisan migrate

但之后我使用下面的命令创建了一个新的迁移文件,并希望创建一个'联系我们'表

php artisan make:migration contactus

在我执行以下命令后,在两个命令之后生成'联系我们'表我收到以下错误:表'用户'已存在

php artisan migrate

这是我的迁移文件代码Contactus:

public function up()
    {
        Schema::create('contactus',function(Blueprint $table){
            $table->increments('id');
            $table->string('email');
            $table->string('message');
            $table->timestamp('created_at')->nullable();
        });
    }

我有什么帮助,我很欣赏..

4 个答案:

答案 0 :(得分:1)

听起来像用户迁移文件已被编辑,需要重新迁移。运行:php artisan migrate:refresh

警告这将删除数据库中存储的所有内容,因此请确保您有Seeder设置将任何相关内容放回数据库。

如果您在重新迁移时获得Laravel 5.4: Specified key was too long error,请打开AppServiceProvider并添加:

Schema::defaultStringLength(191);进入boot函数

确保在AppServiceProvider文件的顶部添加use Illuminate\Support\Facades\Schema;

答案 1 :(得分:1)

对于此问题SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长;最大密钥长度为767字节(SQL:alter table users添加唯一users_email_unique(email))在App / Providers文件夹下打开AppServiceProvider并添加以下代码:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Schema;
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

答案 2 :(得分:0)

尝试运行以下命令再次删除并迁移所有表:

php artisan migrate:fresh

注意: 如果您的用户表已经迁移或存在,并且您希望在命令下面创建一个新表:

php artisan make:migration contactus

然后

php artisan migrate

答案 3 :(得分:-1)

使用CLI时,请确保不要盲目复制其他迁移文件。

首先运行php artisan make:migration create_contact_us_table

现在在/database/migrations/create_contact_us_table.php打开迁移文件位置

在此处编辑您的迁移,在UP功能中,您应该具有类似

的内容
public function up()
{
    Schema::create('contact_us', function(Blueprint $table){
        $table->increments('id');
        //Other table content
    });
}

在此之后,您可以再次运行php artisan migrate来运行迁移。 如果您不断收到此错误,请检查数据库和迁移表。 它可能没有保存它已经运行您以前的迁移。如果是这种情况,请从数据库中删除所有表并再次运行php artisan migrate。应该工作。