【问题标题】:laravel not creating new tablelaravel 没有创建新表
【发布时间】:2017-06-22 11:10:53
【问题描述】:

我只有一个新的迁移文件,即 2017_02_05_121119_create_posts_table.php,但是当我运行“php artisan migrate”时,它显示“[Symfony\Component\Debug\Exception\FatalErrorException] 无法重新声明类 CreateUsersTable”。

    <?php

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

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->string('description');
            $table->timestamps();
        });
    }

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

【问题讨论】:

  • 做一件事,立即删除迁移表,然后再次触发 php artisan migrate 命令,它会起作用,但是您的表中是否有已经迁移的数据,然后备份它,然后清除您的数据库,然后运行命令
  • 我也是这样做的,迁移创建成功,但是posts表没有创建
  • 在您的问题中发布您的帖子迁移脚本,我敢肯定,该类名有问题
  • 好的让我看看添加有问题的代码
  • 请看代码

标签: php laravel-5


【解决方案1】:

您是否为此迁移制作了副本/粘贴?看起来你留下了以前的类名,因为种子是创建帖子,但类创建用户。

【讨论】:

  • 我明白了,谢谢@Rocco 我已经更改了类名,但出现了另一个问题......现在它说 [PDOException] SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users'已经存在了
  • 它没有创建新表
  • 迁移的第一行同样的事情,你必须将表的名称从用户更改为帖子
  • 这个文件没问题,但是当你开始迁移时,如果它以错误结束,可能会发生它没有在迁移表中将它设置为 don。所以看起来它试图重新创建它已经存在的用户表。尝试手动迁移整个数据库并重新进行迁移
【解决方案2】:

编辑 AppServiceProvider.php 并包含“使用 Illuminate\Support\Facades\Schema;”然后在引导方法中添加这一行“Schema::defaultStringLength(191);”

【讨论】:

    【解决方案3】:

    在 Providers 文件夹中编辑 AppServiceProvider.php 文件。

    你只需要添加这两行:

    use Illuminate\Support\Facades\Schema;
    

    在开机功能中:

     Schema::defaultStringLength(191);
    

    【讨论】:

      猜你喜欢
      • 2023-01-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 2019-04-17
      • 2022-01-11
      • 2022-09-27
      • 2021-10-17
      相关资源
      最近更新 更多