为什么表在数据库中不存在

时间:2019-10-11 13:47:35

标签: mysql database laravel migration

我的代码怎么了?迁移成功,但是表不存在

public function up()
{
    Schema::create('student', function (Blueprint $table) {
        $table->varchar('student_id', 6)->primary_key()->nullable(false);
        $table->varchar('student_name', 50)->nullable(false);
        $table->enum('student_class', ['RPL-1','RPL-2','RPL-3'])->nullable(true);
        $table->enum('student_gender', ['MALE','FEMALE'])->nullable(true);
        $table->text('student_address')->nullable(true);
        $table->tinyinteger('student_status', ['1'])->default('1');
        $table->timestamps();
    });
}

1 个答案:

答案 0 :(得分:0)

由于尝试使用Laravel中不可用的功能或滥用功能,因此示例中的迁移将无法运行。我整理了一个新的迁移并进行了测试,它运行良好。

Schema::create('student', function (Blueprint $table) {
    $table->string('student_id', 6)->primary_key()->nullable(false);
    $table->string('student_name', 50)->nullable(false);
    $table->enum('student_class', ['RPL-1', 'RPL-2', 'RPL-3'])->nullable(true);
    $table->enum('student_gender', ['MALE', 'FEMALE'])->nullable(true);
    $table->text('student_address')->nullable(true);
    $table->tinyinteger('student_status')->default('1');
    $table->timestamps();
});

我假设student_id在您的应用程序中必须是某种独特的代码,因此我将其更改为使用string函数。这将创建一个varchar type字段,第二个参数是字符串的长度。

我还更改了tinyinteger的{​​{1}}函数参数,似乎您正在尝试指定所有可能的值,类似于您对student_status的使用。 enum类型无法获取可能值的列表,因此您可能需要将其更改为布尔值(如果状态为true或false),枚举或相关表的外键(如果相关)。

如果您在应用程序中使用Eloquent ORM,则可能不需要在所有列名前面加上tinyinteger。如果使用得当,您应该能够简单地使用要存储的变量的名称,例如student将变成student_name