Axeia
278
1
Laravel

View not getting removed in down function

Posted 6 months ago by Axeia

Hello,

When running php artisan migrate:fresh --seed I get the error that the view already exists.

migrating: 2018_10_07_175757_add_triggers_and_views

   Illuminate\Database\QueryException  : SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'eggfriends_count' already exists (SQL: CREATE VIEW eggfriends_count AS
           SELECT trainers.name, count(*) as eggfriends_count                                                                                                                                                                                                                 
             FROM eggfriends                                                                                                                                                                                                                                                  
             JOIN trainers ON accepter = name OR requester = name                                                                                                                                                                                                             
            WHERE accepted = true                                                                                                                                                                                                                                             
         GROUP BY trainers.name                                                                                                                                                                                                                                               
        )                                                                                                                                                                                                                                                                     

  at /home/Server/web/eggfriends/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'eggfriends_count' already exists")
      /home/Server/web/eggfriends/vendor/laravel/framework/src/Illuminate/Database/Connection.php:507

  2   PDO::exec("CREATE VIEW eggfriends_count AS
           SELECT trainers.name, count(*) as eggfriends_count
             FROM eggfriends
             JOIN trainers ON accepter = name OR requester = name
            WHERE accepted = true
         GROUP BY trainers.name
        ")
      /home/Server/web/eggfriends/vendor/laravel/framework/src/Illuminate/Database/Connection.php:507

  Please use the argument -v to see more details.

I don't understand why however as the down function of this class is as follows:

public function down()
    {
        DB::unprepared('DROP TRIGGER insert_trainer');
        DB::unprepared('DROP TRIGGER delete_trainer');
        DB::unprepared('DROP VIEW eggfriends_count');
    }

After posting this whilst looking at the file names in my Seeder folder I realised this might be due to the Class and/or Filename? Perphaps Laravel assumes that if there's no "Create" in their names that there won't be a reason to run the down method?

[edit] Change the class to CreateViewsAndAddTriggersTable and the file to 2018_10_07_175757_create_views_and_add_triggers_table.php to no avail. So much for that theory.

Changing unprepared to statement also changed nothing.

Please sign in or create an account to participate in this conversation.

Reply to

Use Markdown with GitHub-flavored code blocks.