Laravel Rollback特定数据库

时间:2018-04-17 00:56:20

标签: php laravel migration mariadb

我尝试用我的数据库系统回滚 php artisan migrate:rollback --database='system'

但它似乎不像迁移php artisan migrate --database='system

那样有用 你能不能帮我找到发生的事情。

这是我的config / database.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 个答案:

答案 0 :(得分:0)

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

第1步。

删除供应商文件夹。

第2步。

运行

composer install

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

希望这有帮助

答案 1 :(得分:0)

如果不查看完整的错误日志就很难说,但是如果你通过提供像这样的特定数据库连接为你的迁移创建了方法,那么就有了替代方案

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

然后只有php artisan migrate:rollback才能完美地运作。

答案 2 :(得分:0)

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.

了解更多关注网址:       Rollback one specific migration in Laravel

答案 3 :(得分:0)

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

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