diff --git a/libraries/classes/Controllers/Database/Structure/EmptyTableController.php b/libraries/classes/Controllers/Database/Structure/EmptyTableController.php index 0e3309917d..85d3ae507e 100644 --- a/libraries/classes/Controllers/Database/Structure/EmptyTableController.php +++ b/libraries/classes/Controllers/Database/Structure/EmptyTableController.php @@ -14,6 +14,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\Operations; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; +use PhpMyAdmin\Table; use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Util; @@ -21,6 +22,7 @@ use PhpMyAdmin\Utils\ForeignKey; use function __; use function count; +use function is_string; final class EmptyTableController extends AbstractController { @@ -82,6 +84,10 @@ final class EmptyTableController extends AbstractController $selectedCount = count($selected); for ($i = 0; $i < $selectedCount; $i++) { + if (! is_string($selected[$i]) || Table::get($selected[$i], $GLOBALS['db'], $this->dbi)->isView()) { + continue; + } + $aQuery = 'TRUNCATE '; $aQuery .= Util::backquote($selected[$i]); diff --git a/libraries/classes/Partitioning/Maintenance.php b/libraries/classes/Partitioning/Maintenance.php index e4d9666d8d..e0e02770a9 100644 --- a/libraries/classes/Partitioning/Maintenance.php +++ b/libraries/classes/Partitioning/Maintenance.php @@ -7,8 +7,10 @@ namespace PhpMyAdmin\Partitioning; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\DatabaseName; use PhpMyAdmin\Dbal\TableName; +use PhpMyAdmin\Table; use PhpMyAdmin\Util; +use function __; use function sprintf; final class Maintenance @@ -135,6 +137,10 @@ final class Maintenance */ public function truncate(DatabaseName $db, TableName $table, string $partition): array { + if (Table::get($table->getName(), $db->getName(), $this->dbi)->isView()) { + return [false, __('This table is a view, it can not be truncated.')]; + } + $query = sprintf( 'ALTER TABLE %s TRUNCATE PARTITION %s;', Util::backquote($table->getName()),