首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel迁移没有在DB中添加表

问Laravel迁移没有在DB中添加表
EN

Stack Overflow用户
提问于 2018-02-08 10:10:12
回答 4查看 1.2K关注 0票数 2

我在2018_02_08_094356_create_currency_table.php文件的迁移中添加了一个新的表。

这是密码:

代码语言:javascript
复制
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateCurrencyTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('currency', function (Blueprint $table) {
            $table->increments('id');
            $table->decimal('usdeur', 15, 2);
            $table->decimal('usdchf', 15, 2);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('currency');
    }
}

当我运行php artisan migrate时,我的DB中只有默认的laravel用户(和迁移)表。没有货币一号。

可能是什么原因?

编辑

所有的迁移都很好。问题是:

照明\数据库\QueryException SQLSTATE42000:语法错误或访问冲突: 1071指定的键太长;最大键长度为767字节(SQL: alter用户添加唯一的users_email_unique(电子邮件)) PDOException SQLSTATE42000:语法错误或访问冲突: 1071指定的键太长;最大键长度为767字节

解决方案是在AppServiceProvider.php中添加这个

代码语言:javascript
复制
public function boot()
{
    Schema::defaultStringLength(191);
}

来源:https://laravel-news.com/laravel-5-4-key-too-long-error

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-02-08 10:10:56

您需要运行composer du来首先注册迁移类。

然后运行php artisan migrate命令来执行新的迁移。

票数 1
EN

Stack Overflow用户

发布于 2018-02-08 10:18:56

打开AppServiceProvider.php,编写以下代码:

代码语言:javascript
复制
public function boot()
{
    Schema::defaultStringLength(191);
}

表名必须是复数回滚您的迁移使用

代码语言:javascript
复制
php artisan migrate:rollback

或

从数据库和迁移表中手动删除表,并尝试以下代码:

代码语言:javascript
复制
migration command:
php artisan make:migration create_currencies_table

代码:

代码语言:javascript
复制
class CreateCurrenciesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('currencies', function (Blueprint $table) {
            $table->increments('id');
            $table->decimal('usdeur', 15, 2);
            $table->decimal('usdchf', 15, 2);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('currencies');
    }
}

现在快跑

代码语言:javascript
复制
php artisan migrate
票数 1
EN

Stack Overflow用户

发布于 2018-02-08 10:27:03

所有迁移记录都记录在表migrations.It中,这表明您创建了表before.So,删除了表迁移中有关货币的记录,然后再次运行php artisan migrate。更重要的是,刷新数据库并检查表货币是否已创建。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48682828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档