【问题标题】:Laravel Rollback specific databaseLaravel 回滚特定数据库
【发布时间】:2018-09-26 20:08:13
【问题描述】:

我尝试回滚我的数据库系统 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

【问题讨论】:

  • dddconnection 来自哪里?您是否不小心修改了一些供应商文件而忘记还原?
  • 我不知道我找不到来自哪里。不,我没有找任何供应商

标签: php laravel migration mariadb


【解决方案1】:

您不小心更改了 vendor 文件夹中的方法。

第 1 步。

删除供应商文件夹。

第 2 步。

运行

composer install

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

希望对你有帮助

【讨论】:

    【解决方案2】:

    如果不查看完整的错误日志很难说,但是如果您通过提供这样的特定数据库连接来为迁移创建向下方法

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

    那么只有php artisan migrate:rollback 可以完美地解决这个问题。

    【讨论】:

      【解决方案3】:
      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

      【讨论】:

        【解决方案4】:

        您好,感谢大家抽出宝贵时间回答我的问题。我发现发生了什么事。在我的一次迁移中,在向下功能中,我有一个功能拼写错误

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

        【讨论】:

          猜你喜欢
          • 2020-06-05
          • 1970-01-01
          • 2020-02-02
          • 2018-10-05
          • 2017-11-27
          • 1970-01-01
          • 2017-05-11
          • 1970-01-01
          • 2010-10-09
          相关资源
          最近更新 更多