mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-01-15 22:59:33 +00:00
Fix sequences of postgres after migration
This commit is contained in:
parent
e0a25009d9
commit
00b35e3306
1 changed files with 35 additions and 0 deletions
|
|
@ -26,6 +26,8 @@ namespace App\Command\Migrations;
|
||||||
use App\DataTables\Helpers\ColumnSortHelper;
|
use App\DataTables\Helpers\ColumnSortHelper;
|
||||||
use App\Entity\Parts\Manufacturer;
|
use App\Entity\Parts\Manufacturer;
|
||||||
use App\Services\ImportExportSystem\PartKeeprImporter\PKImportHelper;
|
use App\Services\ImportExportSystem\PartKeeprImporter\PKImportHelper;
|
||||||
|
use Doctrine\DBAL\Platforms\AbstractMySQLPlatform;
|
||||||
|
use Doctrine\DBAL\Platforms\PostgreSQLPlatform;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
|
||||||
use Doctrine\ORM\Id\AssignedGenerator;
|
use Doctrine\ORM\Id\AssignedGenerator;
|
||||||
|
|
@ -122,6 +124,10 @@ class DBMigrationCommand extends Command
|
||||||
$this->targetEM->flush();
|
$this->targetEM->flush();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//Fix sequences / auto increment values on target database
|
||||||
|
$io->info('Fixing sequences / auto increment values on target database...');
|
||||||
|
$this->fixAutoIncrements($this->targetEM);
|
||||||
|
|
||||||
$output->writeln('Database migration completed successfully.');
|
$output->writeln('Database migration completed successfully.');
|
||||||
|
|
||||||
if ($io->isVerbose()) {
|
if ($io->isVerbose()) {
|
||||||
|
|
@ -130,4 +136,33 @@ class DBMigrationCommand extends Command
|
||||||
|
|
||||||
return Command::SUCCESS;
|
return Command::SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function fixAutoIncrements(EntityManagerInterface $em): void
|
||||||
|
{
|
||||||
|
$connection = $em->getConnection();
|
||||||
|
$platform = $connection->getDatabasePlatform();
|
||||||
|
|
||||||
|
if ($platform instanceof PostgreSQLPlatform) {
|
||||||
|
$connection->executeStatement(
|
||||||
|
//From: https://wiki.postgresql.org/wiki/Fixing_Sequences
|
||||||
|
<<<SQL
|
||||||
|
SELECT 'SELECT SETVAL(' ||
|
||||||
|
quote_literal(quote_ident(PGT.schemaname) || '.' || quote_ident(S.relname)) ||
|
||||||
|
', COALESCE(MAX(' ||quote_ident(C.attname)|| '), 1) ) FROM ' ||
|
||||||
|
quote_ident(PGT.schemaname)|| '.'||quote_ident(T.relname)|| ';'
|
||||||
|
FROM pg_class AS S,
|
||||||
|
pg_depend AS D,
|
||||||
|
pg_class AS T,
|
||||||
|
pg_attribute AS C,
|
||||||
|
pg_tables AS PGT
|
||||||
|
WHERE S.relkind = 'S'
|
||||||
|
AND S.oid = D.objid
|
||||||
|
AND D.refobjid = T.oid
|
||||||
|
AND D.refobjid = C.attrelid
|
||||||
|
AND D.refobjsubid = C.attnum
|
||||||
|
AND T.relname = PGT.tablename
|
||||||
|
ORDER BY S.relname;
|
||||||
|
SQL);
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue