42p07 ошибка отношение уже существует

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()
at System.Runtime.CompilerServices.ValueTaskAwaiter
1.GetResult()
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

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CREATE TABLE cabins
(
    Id SERIAL PRIMARY KEY,
    Num_of_passangers NUMERIC,
    Price NUMERIC(6)
);
 
CREATE TABLE passenger
(
    Id SERIAL PRIMARY KEY,
    Cabin_id INTEGER REFERENCES cabins (Id),
    Passport_data CHARACTER VARYING(30)
);
 
CREATE TABLE car
(
    Id SERIAL PRIMARY KEY,
    Passenger_id INTEGER REFERENCES passenger (Id),
    Brand CHARACTER VARYING(30),
    Payment CHARACTER VARYING(30),
    Num_of_car NUMERIC(30),
    Scan CHARACTER VARYING(30)
);
 
CREATE TABLE nationality
(
    Id SERIAL PRIMARY KEY,
    Country CHARACTER VARYING(30)
);
 
CREATE TABLE carriage
(
    Id SERIAL PRIMARY KEY,
    Num_of_carriage NUMERIC(30)
);

Миниатюры

Ошибка при попытке создать таблицу
 



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

SQL
1
DROP TABLE cabins;

Потом заново создаёте таблицу вашими командами.
Чтобы ошибка не выскакивала, в CREATE TABLE можно добавить:

SQL
1
CREATE TABLE IF NOT EXISTS таблица(столбец тип_данных);



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, я начал видеть эту ошибку.

Изображение 333965


У меня этот параметр в моей базе данных.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!                                                                            
 

Понравилась статья? Поделить с друзьями:
  • 4294967295 ошибка visual studio
  • 42901 ошибка тендер
  • 429 произошла ошибка гугл
  • 429 ошибка стим
  • 429 ошибка на сайте ситилинк