Laravel迁移表未创建

4

我是Laravel的新学习者,我跟着教程创建了一张文章表。这是我在/database/migrations/2017_02_13_145946_create_article_table.php文件中的部分代码:

public function up()
{
    //
    Schema::create('articles', function(Blueprint $table)
    {
       $table->increments('id');
       $table->string('title');
       $table->text('body')->nullable();
       $table->integer('user_id');
       $table->timestamps();
    });
}

当我运行php artisan migrate时,表格没有被创建。我在Google上搜索了这个问题,并运行了php artisan migrate:reset命令来删除所有的表格。当我再次运行php artisan migrate命令时,它显示:

Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2017_02_13_145946_create_article_table

但仅更新迁移表的记录,并未创建任何内容。表userpassword_resets也没有被创建。

你有什么想法,我可能做错了什么?


如果显示迁移成功消息,则必须创建表格,您是否检查了数据库中的迁移表以验证记录是否存在.. - Mohamed Akram
@AkramWahid 我已经检查了迁移表,ID列确实增加了。但是另外两个表没有生成。 - Shawn Rong
你能给我展示一下你的迁移表截图吗? - Mohamed Akram
2个回答

6

由于表格列(值)长度默认为1071,MySQL无法接受

要解决这个问题,请前往MySQL并删除所有的表格。 前往您的应用程序(项目)文件夹 => app => Providers

在您的AppServiceProvider.php文件顶部写入以下内容。

//edit:yrs:- Needed for edit
use Illuminate\Support\Facades\Schema;

写在启动方法(boot method)内部

//edit:yrs:-we can edit column sizefor tables here
Schema::defaultStringLength(150);

然后进入控制台并执行命令


*php artisan migrate:status,查看运行状态是否为y或n。如果是n,则执行

*command />`php artisan migrate`

*command />`php artisan migrate:status` and then 

*command />`php artisan migrate:refresh` and then 

*command />`php artisan migrate:status`

这就是你在MySQL中创建表的全部过程。


1

我通常会尝试几件事情:

  1. 在控制台中执行回滚操作,直到出现“nothing to rollback”:

    php artisan migrate:rollback

  2. 然后,检查您的文章迁移文件,并查找 down 函数(如果没有,则需要添加):

    public function down() { // Drop articles table Schema::drop('articles'); }

  3. 保存您的迁移文章文件(我知道这听起来很蠢,但我以前遇到过这种情况)。我建议您还更改文件的名称,从:

    2017_02_13_145946_create_article_table.php,改为:

    2017_02_13_145946_create_articles_table.php

  4. 使用:

    composer dump-autoload

  5. 进入您的数据库(在此示例中为 laravel_db),并检查是否有任何表(Mysql Console):

    show databases; use laravel_database: show tables;

  6. 如果没有任何表,只有迁移表,请使用以下命令删除它:

    drop table migrations;

  7. 一旦数据库为空,就可以从控制台运行迁移:

    php artisan migrate

  8. 最后,如果没有出现错误,请检查已创建的表(Mysql Console):

    show tables;


谢谢您的回复!我已经重新创建了项目,问题已经解决了。 - Shawn Rong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接