PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

дублираният ключ на postgresql нарушава уникалното ограничение

Тази статия обяснява, че вашата последователност може да не е синхронизирана и че трябва ръчно да я върнете в синхронизация.

Извадка от статията в случай, че URL адресът се промени:

Ако получите това съобщение, когато се опитвате да вмъкнете данни в PostgreSQL база данни:

ERROR:  duplicate key violates unique constraint

Това вероятно означава, че последователността на първичните ключове в таблицата, с която работите, е станала несинхронизирана, вероятно поради процес на масово импортиране (или нещо в този смисъл). Наречете го "бъг от дизайн", но изглежда, че трябва ръчно да нулирате индекса на първичен ключ след възстановяване от дъмп файл. Във всеки случай, за да видите дали стойностите ви не са синхронизирани, изпълнете тези две команди:

SELECT MAX(the_primary_key) FROM the_table;   
SELECT nextval('the_primary_key_sequence');

Ако първата стойност е по-висока от втората, последователността ви не е синхронизирана. Архивирайте вашата база данни PG (за всеки случай), след което изпълнете тази команда:

SELECT setval('the_primary_key_sequence', (SELECT MAX(the_primary_key) FROM the_table)+1);

Това ще настрои последователността на следващата налична стойност, която е по-висока от всеки съществуващ първичен ключ в последователността.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мигриране от MSSQL към PostgreSQL – какво трябва да знаете

  2. Как да принудя Postgres да използва конкретен индекс?

  3. PostgreSQL функция/запаметена процедура CURRENT_TIMESTAMP не се променя

  4. Django уникално заедно ограничение неуспех?

  5. Приоритет, базиран на времето в заявка за активен запис