I have strange issue which I can’t find solution for.
The stack is: NET Core 2, EF, PostgreSQL.
I use .NET Core Identity with User : IdentityUser
to extend base user model with additional fields.
After I create first migration, drop whole database and try to dotnet ef database update
I always get an error: 42P07: relation "AspNetRoles" already exists
Even with this error, the database and tables are created but it makes migrations useless as it does not save applied migrations so I can’t update DB with following changes…
fail: Microsoft.EntityFrameworkCore.Database.Command[200102]
Failed executing DbCommand (0ms) [Parameters=[], CommandType=’Text’, CommandTimeout=’30’]
CREATE TABLE «AspNetRoles» (
«Id» text NOT NULL,
«ConcurrencyStamp» text NULL,
«Name» varchar(256) NULL,
«NormalizedName» varchar(256) NULL,
CONSTRAINT «PK_AspNetRoles» PRIMARY KEY («Id»)
); Npgsql.PostgresException (0x80004005): 42P07: relation «AspNetRoles» already exists at
Npgsql.NpgsqlConnector.d__148.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()
1.GetResult()
at System.Runtime.CompilerServices.ValueTaskAwaiter
at Npgsql.NpgsqlConnector.d__147.MoveNext()
mariammm 1 / 1 / 0 Регистрация: 24.09.2019 Сообщений: 173 |
||||
1 |
||||
Ошибка при попытке создать таблицу15.10.2020, 17:50. Показов 5933. Ответов 2 Метки нет (Все метки)
Пишу код и нажимаю на кнопку для создания, в первый раз всё ок, в следующие разы появляется ошибка ERROR: ОШИБКА: отношение «cabins» уже существует SQL state: 42P07
Миниатюры
0 |
1213 / 938 / 373 Регистрация: 02.09.2012 Сообщений: 2,859 |
|
15.10.2020, 23:22 |
2 |
Так и что тут удивительного.
1 |
remarkes 309 / 232 / 15 Регистрация: 01.07.2011 Сообщений: 812 Записей в блоге: 1 |
||||||||
17.10.2020, 18:40 |
3 |
|||||||
Потом заново создаёте таблицу вашими командами.
1 |
I created this table here:
CREATE TABLE FILM
(Title CHAR (180) NOT NULL,
Year NUMERIC (4) NOT NULL,
Director CHAR (50),
Genre CHAR (15),
Country CHAR (15),
Distribution CHAR (30) NOT NULL,
ID NUMERIC (4) PRIMARY KEY
);`
and then i did an insert operation
insert into film values (‘JOJORABBIT’, ‘16gennaio’, ‘2020, ’TaikaWaititi’,‘Commedia/Drammatico’,’USA’, ‘WaltDisneyStudiosMotionPictures’, ‘1h48, ‘DD43’);
insert into film values(‘1917’, ‘23gennaio’, ‘2020’, ‘SamMendes’,’storico/drammatico’,‘RegnoUnito’, ’01DISTRIBUTION’, ‘1h59’, ‘RE34’);
insert into film values(‘Underwater’,’30gennaio’,’2020’,’WilliamEubank’,’survival/horror’ , ‘USA’, ‘20thCenturyFox’, ’1h35’, ‘AQ67’);
i run it and it gave me this error: » ERROR SQL STATE 42P07, the relation «Film» already exists», how can i fix it?
thank you
- Laravel Версия: 5.1
- Версия PHP: 5.6
- Драйвер базы данных и версия: psql
Описание:
Я запускаю php artisan migrate
в первый раз, и он работает отлично.
Затем:
Я добавил еще 1 скрипт миграции, чтобы изменить одну из моих таблиц.
Как только я запустил php artisan migrate
, я начал видеть эту ошибку.
У меня этот параметр в моей базе данных.php
'default' => env('DB_CONNECTION', 'pgsql'),
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
Пожалуйста, позвольте мне знать, что еще, я могу предоставить.
#symfony #doctrine-orm #api-platform.com
#symfony #doctrine-orm #api-platform.com
Вопрос:
Я создаю объекты в платформе API. Каждый раз, когда я добавляю новую сущность или изменяю поле, я запускаю
docker-compose exec php bin/console doctrine:schema:update --force
для синхронизации схемы. До сих пор я не сталкивался с проблемами, но после того, как я создал поле даты и времени и попытался синхронизировать, я получаю сообщение об ошибке таблица уже существует
In AbstractPostgreSQLDriver.php line 66:
An exception occurred while executing 'CREATE SEQUENCE financial_statement_templates_definition_fstemplate_definition_id_seq INCREMENT BY 1 MINVALUE 1 START 1':
In PDOConnection.php line 83:
SQLSTATE[42P07]: Duplicate table: 7 ERROR: relation "financial_statement_templates_definition_fstemplate_definition_" already exists
In PDOConnection.php line 78:
SQLSTATE[42P07]: Duplicate table: 7 ERROR: relation "financial_statement_templates_definition_fstemplate_definition_" already exists
В обычном случае я бы просто удалил таблицы и воссоздал их заново, но поскольку я использую платформу API в docker, у меня нет доступа к базе данных. Есть ли способ решить эту проблему?
Ответ №1:
Удалось это выяснить. Я удалил базу данных, выполнив следующую команду
docker-compose exec php bin/console doctrine:database:drop --force
Затем воссоздал базу данных, используя этот оператор из командной строки
docker-compose exec php bin/console doctrine:database:create
Затем обновил схему, используя этот оператор
docker-compose exec php bin/console doctrine:schema:update --force
Updating database schema...
6 queries were executed
[OK] Database schema updated successfully!