PHP artisan 迁移不创建新的 table

PHP artisan migrate not creating new table

我是 Laravel 的新手,我正在关注 Laravel Documentations 以及一些教程视频。但是,我在我的本地 CMD prompt 中 运行 宁这个 php artisan migrate 代码,它没有在 phpmyadmin 中创建 Database TableWhosebug 中还有其他几个与此相关的类似主题,但 none 解决了我的问题。请不要标记此重复项。

好的,就是这样。我运行这个代码

php artisan make:migration create_student_table --create=student

并且新文件在迁移文件夹中创建为 2016_04_08_061507_create_student_table.php

然后在那个文件中我 运行 这个 code

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

    class CreateStudentTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('student', function (Blueprint $table) {
                $table->increments('id');
                $table->timestamps();
                $table->string('name', 20); 
                $table->string('email', 255);
            });
        }

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

然后在 cmd 我 运行 php artisan migrate 但它没有创建 student table。相反,它显示此消息

[PDOException] SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists

我几天前使用与上述类似的方法创建了 users table。但是没有创建新的 student table。我在这里错过了什么吗? 提前致谢。

这意味着 Laravel 正在首先尝试 运行 users table 迁移。如果您正在开发中并且不需要保留数据,您可以删除 users table 然后 运行 php artisan migrate

编辑

move out already ran migrations from database\migrations folder, before running new migration files. after running the new migrations move back in the past migrations where it was before.

这意味着您已经 运行 php artisan migrate 一次并且 table 已经存在于数据库中。有时如果 artisan 在说谎,你需要做一个 composer dump-autoload

因此您需要回滚编辑前的最后一次更改和 运行宁 php artisan migrate。回滚你可以使用 php artisan migrate:rollback

此外,如果您想删除所有更改,您可以 运行 php artisan migrate:reset

php artisan migrate --force强制运行迁移。

完成所有这些步骤后,如果无法运行 迁移,如果是开发环境,则删除数据库再次创建数据库并运行 php artisan migrate

你的数据库已经有这个 table,只需删除它并让 laravel 由 artisan 创建。

您有用户迁移权限吗?如果是这样,请在以下位置插入您的用户创建 table:

if(!Schema::hasTable('users')) ...

我的 Laravel 设置(mac os Sierra 10.12.16)和将 MAMP 与 atom 一起使用时遇到了类似的问题,直到我找到最终的解决方案接下来的步骤。

在设置我的本地环境时,我发现使用以下步骤可以防止以后出现迁移问题,

IN AppServiceProvider.php  add the following code:

use Illuminate\Support\Facades\Schema;

public function boot()
{
    //
    Schema::defaultStringLength(191);
}

then in database.php:

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

THEN FINALLY IN .env:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=
DB_DATABASE=hackable
DB_USERNAME=root
DB_PASSWORD=root

希望这对某些人有所帮助,因为我花了几天时间才最终正确设置:)

这对我有用:从数据库中删除所有表并 运行

php artisan migrate.

有时,如果您使用的是 MAMP 服务器,您可能会因为数据库连接而收到此错误。这是因为端口号,通常在使用 MAMP 时,mysql 数据库的端口号是 8889,你必须在你的配置和 运行 你的 artisan 命令中更改它肯定会工作。

何必呢?

您可以使用 php artisan migrate:fresh 这将忽略当前用户 table 并从新创建 tables。

当我遇到这个问题时,我犯了一个错误 $table-> id(); 但应该是 $table->bigIncrements('id');