运行一个特定的laravel 4迁移(单个文件)

Mam*_*dou 61 migration laravel laravel-4

我不想在laravel 4上运行All Outstanding Migrations.我有5次迁移.现在我只想运行一次迁移.而不是做:php artisan migrate我想运行一个特定的迁移,如:php artisan migrate MY_MIGRATION_TO_RUN

Ant*_*iro 50

看起来你做错了.

迁移由Laravel 按照它们创建的确切顺序逐个执行,因此它可以跟踪执行和执行顺序.这样,Laravel将能够安全地回滚一批迁移,而不会有破坏数据库的风险.

赋予用户手动执行它们的权力,使得无法知道(确定)如何回滚数据库中的更改.

如果您确实需要在数据库中执行某些操作,则最好创建一个DDL脚本并在Web服务器上手动执行它.

或者只是创建一个新的迁移并使用artisan执行它.

编辑:

如果您需要先运行它,则需要先创建它.

如果您只需要重新排序,请将文件重命名为第一个.使用时间轴创建迁移:

2013_01_20_221554_table
Run Code Online (Sandbox Code Playgroud)

要在此之前创建新迁移,您可以为其命名

2013_01_19_221554_myFirstMigration
Run Code Online (Sandbox Code Playgroud)

  • -1因为"看起来你做错了".恕我直言,Laravel做错了.发展<>生产.这两种环境需要不同类型的保障和安全措施,如果它们遵循不同的学科,则完全合法.开发首先需要灵活性,开发人员需要根据需要调整迁移机制.我自己也非常缺乏这种灵活性,并采用直接的数据库操作来获得我想要的东西,这种东西在生产中永远不会发生,但在开发过程中往往就足够了. (11认同)
  • YE,你说的很清楚,但在评论的最后我看到:"或者只是创建一个新的迁移并使用工匠执行它." 我创建了一个新的迁移,我想运行它.如果我这样做:工匠迁移,这个comman将运行我的所有迁移而不是我创建的新迁移. (3认同)
  • 如果要迁移数据库,然后添加新的迁移,只需再次运行artisan migrate命令。它将迁移所有未迁移的迁移,它们的创建顺序相同。 (3认同)

Pra*_*lla 38

只需将已运行的迁移移出app/config/database/migrations /文件夹即可.然后运行该命令php artisan migrate.对我来说就像一个魅力.

  • 试过这个并且这是一个很好的但是如果我回滚的话我会遇到问题 (2认同)

fic*_*489 29

您可以将迁移放在更多文件夹中,并执行以下操作:

php artisan migrate --path=/app/database/migrations/my_migrations
Run Code Online (Sandbox Code Playgroud)


Eri*_*bar 23

运行Laravel 4迁移时,一个很好的小片段可以缓解任何恐惧php artisan migrate --pretend.这将仅输出在运行实际迁移时已运行的SQL.

听起来你的最初4次迁移已经开始了.我猜想,当你php artisan migrate只运行新的,最近的迁移时.

建议:确保你的所有up()和down()都按照你期望的方式工作.我喜欢在运行迁移时运行up(),down(),up(),只是为了测试它们.如果你没有麻烦地进行5-6次迁移并且意识到你无法将它们回滚,那将是非常糟糕的,因为你没有将down()与up()100%匹配.

只是我的两分钱!希望有所--pretend帮助.


elf*_*fif 15

重新进行迁移的唯一方法是肮脏的.您需要打开数据库并删除迁移表中代表您的迁移的行.

然后再次运行php artisan migrate.

  • 您还可以设置“批处理”字段 - laravel 一次运行(并回滚)一个批次的迁移,因此您只需更改批次编号即可回滚单个迁移。 (2认同)

小智 11

如果你想在 Laravel 中运行(单个文件)迁移,你可以执行以下操作:

php artisan migrate --path=/database/migrations/migrations_file_name
Run Code Online (Sandbox Code Playgroud)

例如。

C:\xampp\htdocs\laravelv3s>php artisan migrate --path=/database/migrations/2020_02_14_102647_create_blogs_table.php
Run Code Online (Sandbox Code Playgroud)


jid*_*kin 5

您可以从终端创建用于迁移的单独目录,如下所示:

mkdir /database/migrations/my_migrations
Run Code Online (Sandbox Code Playgroud)

然后将要运行的特定迁移移动到该目录并运行以下命令:

php artisan migrate --path=/database/migrations/my_migrations
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


小智 5

您可以使用以下解决方案:

  1. 创建您的迁移。
  2. 检查您的迁移状态,例如:php artisan migrate:status
  3. 复制新迁移的全名,然后执行以下操作:php artisan migrate:rollback --path:2018_07_13_070910_table_tests
  4. 然后这样做php artisan migrate

最后,迁移特定的表。祝你好运。