我用迁移重命名打破了我的Laravel框架


I broke my Laravel framework with migration renaming

我有一个很好的数据库迁移和播种的Laravel结构。但是我希望我的迁移文件,类,db表被重命名为CreateOrganizationsTable而不是CreateOrganizationsTable

所以我改变了迁移文件名,所有的类和路由。

但是当我在Homestead盒子中执行php artisan migrate:reset时,我得到以下错误:

PHP Fatal error: Class 'CreateOrganisationsTable' not found in /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php on line 299

工匠创建了一些链接,我现在无法修复。

正如士气所提到的,您必须在新迁移或手动进行更改之前重置或回滚到某个点。我知道这一点,但在仅更改时间戳以不同的顺序运行迁移后,仍然会遇到问题。

即使没有更改类名,也必须运行composer dump-autoload

不要忘记在文件中重新命名类

我在php artisan:rollback中遇到了类似的问题,我刚刚打开我的laravel项目并转到下一个目录:

供应商'作曲家' autoload_static.php

并修改了PHP迁移的名称,希望这对您有所帮助:)

问题是,当你运行migrate:reset命令时,artisan想在所有类上调用down方法。自从你重命名了这个类,他就再也找不到它了!

因此,在重命名您的类和/或文件之前,运行php artisan migrate:reset,这将清理您的数据库并删除所有表,之后只需运行php artisan migrate。你应该又有一个工作的数据库了。

如果migrate:reset命令仍然不起作用,您可以简单地手动删除表(不要忘记删除迁移表)并再次运行php artisan migrate

Edit:如果您实际上不想运行migrate:reset,而只是重命名迁移,您可以编辑文件(和类)的名称。但在此之后,您必须手动编辑数据库中的表migrations。找到相应的行,并编辑文件的名称以匹配新名称。

  1. 重命名文件
  2. 重命名类
  3. 重命名数据库中migrations表中的migrations列

如果使用正确的方法,重命名迁移可以很好地工作。

我也重命名了我的迁移文件很多次,它像预期的那样工作,

但是如果你想重命名迁移,那么你必须注意两件事:

  1. 第一重命名文件名

  2. 打开迁移文件并重命名类名

重命名文件:将您的文件名从2019_06_28_131130_create_organisations_table更改为2019_06_28_131130_create_organizations_table或任何您想要的名称。

打开该迁移文件,并根据您的新名称重命名该文件中的类名:

<?php
use Illuminate'Support'Facades'Schema;
use Illuminate'Database'Schema'Blueprint;
use Illuminate'Database'Migrations'Migration;
//change it from
//class CreateOrganisationsTable extends Migration {
//to
class CreateOrganizationsTable extends Migration {

我想你已经重命名了迁移文件,但是你忘了重命名类名,所以这样做,并尝试运行php artisan migrate:refresh,它会像你想要的那样工作。

我已经执行了一个composer dump- autolload,现在一切正常

如果你使用的是composer,那么我想你可能忘了dump- autolload

composer dump-autoload

如果以上都失败了,就像他们为我做的那样,尝试直接设置表的名称

class NameModel extends Model {
    public $table = 'name_exact_of_the_table';

回答通过如何修复错误基表或视图未找到:1146表laravel关系表?信贷https://stackoverflow.com/users/1607975/jpasosa