代码之家  ›  专栏  ›  技术社区  ›  Racine Pilote

Laravel回滚特定数据库

  •  1
  • Racine Pilote  · 技术社区  · 7 年前

    我尝试使用 php artisan migrate:rollback --database='system'

    但它似乎不像migreation那样工作 php artisan migrate --database='system

    你不能帮我找到发生的事吗。

    这里是我的配置/数据库。php

    'connections' => [
    
        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],
    
        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'port'      => env('DB_PORT', '4444'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
            'engine'    => null,
        ],
    
        'system' => [
            'driver' => 'mysql',
            'host' => env('SYSTEM_DB_HOST', 'localhost'),
            'port' => env('SYSTEM_DB_PORT', '4444'),
            'database' => env('SYSTEM_DB_DATABASE', 'forge'),
            'username' => env('SYSTEM_DB_USERNAME', 'forge'),
            'password' => env('SYSTEM_DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],
    

    这是我的。env文件。

    #-----------------------------------------------------
    # CLIENT DB CONNECTION
    #-----------------------------------------------------
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=databaseNameClient
    DB_USERNAME=homestead
    DB_PASSWORD=secret
    
    #-----------------------------------------------------
    # SYSTEM DB CONNECTION
    #-----------------------------------------------------
    DB_CONNECTION=system
    SYSTEM_DB_HOST=127.0.0.1
    SYSTEM_DB_PORT=3306
    SYSTEM_DB_DATABASE=databaseNameSystem
    SYSTEM_DB_USERNAME=homestead
    SYSTEM_DB_PASSWORD=secret
    

    这是我尝试迁移时收到的消息错误:rollback--database='system':

    [Symfony\Component\Debug\Exception\FatalThrowableError]
      Call to undefined method Illuminate\Database\Schema\MySqlBuilder::dddconnection()
    

    我的堆栈跟踪的最后几行是:

    #23 /vendor/symfony/console/Application.php(117): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #24 /vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #25 /artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #26 {main}  
    [2018-04-17 00:51:07] local.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Illuminate\Database\Schema\MySqlBuilder::dddconnection() in /vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:217
    
    4 回复  |  直到 7 年前
        1
  •  0
  •   FULL STACK DEV    7 年前

    您意外更改了供应商文件夹中的方法。

    第1步。

    删除供应商文件夹。

    第2步。

    composer install
    

    它将再次安装所有库并覆盖更改。

    希望这有帮助

        2
  •  0
  •   dvl333    7 年前

    如果不查看完整的错误日志,很难说清楚,但如果您通过提供这样的特定数据库连接来创建迁移方法,那么还有其他方法可以做到这一点

    Schema::connection('mysql2')->create('some_table', function($table)
    {
    $table->increments('id'):
    });
    

    仅限 php artisan migrate:rollback 将非常适合这一点。

        3
  •  0
  •   Kuldeep Mishra    7 年前
    If you look in your migrations table, then you’ll see each migration 
     has a batch number. So when you roll back, it rolls back each 
     migration that was part of the last batch.
    
    If you only want to roll back the very last migration, then just 
    increment the batch number by one. Then next time you run the rollback 
        command, it’ll only roll back that one migration as it’s in a “batch” of 
     its own.
    

    有关更多信息,请访问url: Rollback one specific migration in Laravel

        4
  •  0
  •   Racine Pilote    7 年前

    嗨,谢谢大家花时间回答我的问题。我发现发生了什么事。在我的一次迁移中,在down函数中,我有一个函数拼写错误

             public function down()
    {
        if (Schema::dddconnection('system')->hasTable('apiservices_categories_translations')) {
            Schema::connection('system')->dropIfExists('apiservices_categories_translations');
        }
    }