Skip to content

Commit 2b7db7e

Browse files
committed
Fix PostgreSQL sequences in migrations
1 parent 0810000 commit 2b7db7e

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace DoctrineMigrations;
6+
7+
use Doctrine\DBAL\Schema\Schema;
8+
use Doctrine\Migrations\AbstractMigration;
9+
10+
final class Version20250115140046 extends AbstractMigration
11+
{
12+
public function getDescription(): string
13+
{
14+
return 'Reset sequences';
15+
}
16+
17+
public function up(Schema $schema): void
18+
{
19+
$tables = [
20+
'access_token',
21+
'conflict_link',
22+
'credentials',
23+
'dev_require_link',
24+
'messenger_messages',
25+
'package',
26+
'provide_link',
27+
'registry',
28+
'replace_link',
29+
'require_link',
30+
'reset_password_request',
31+
'suggest_link',
32+
'tag',
33+
'user',
34+
'version',
35+
];
36+
37+
foreach ($tables as $table) {
38+
$this->addSql("DROP SEQUENCE {$table}_id_seq");
39+
$this->addSql("ALTER SEQUENCE {$table}_id_seq1 RENAME TO {$table}_id_seq");
40+
$this->addSql("SELECT setval(pg_get_serial_sequence('$table', 'id'), (SELECT max(id) FROM \"$table\"), true);");
41+
}
42+
}
43+
44+
public function down(Schema $schema): void
45+
{
46+
$tables = [
47+
'access_token',
48+
'conflict_link',
49+
'credentials',
50+
'dev_require_link',
51+
'messenger_messages',
52+
'package',
53+
'provide_link',
54+
'registry',
55+
'replace_link',
56+
'require_link',
57+
'reset_password_request',
58+
'suggest_link',
59+
'tag',
60+
'user',
61+
'version',
62+
];
63+
64+
foreach ($tables as $table) {
65+
$this->addSql("ALTER SEQUENCE {$table}_id_seq RENAME TO {$table}_id_seq1");
66+
$this->addSql("SELECT setval(pg_get_serial_sequence('$table', 'id'), (SELECT max(id) FROM \"$table\"), true);");
67+
$this->addSql("CREATE SEQUENCE {$table}_id_seq INCREMENT BY 1 MINVALUE 1 START 1");
68+
}
69+
}
70+
}

0 commit comments

Comments
 (0)