Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
Есть таблица и функция, ошибка добулирования значения ключа возникает странно и неопределенно, скажем сделал новую базу, первый раз вызвал функцию, получил ошибку, тут же второй раз вызываю - ошибки нет Как такая ошибка может возникнуть в принципе в такой функции, там же проверка вроде есть? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 14:53 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинКак такая ошибка может возникнутьРазработчик баз данных должен обладать достаточной фантазией, чтобы понять, как работают уровни изоляции. Убери проверку if, она и так сработает по констрейнту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 15:04 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
p2., UNIQUE по name не наблюдаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 16:20 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
Ролг Хупин, А каким образом вызывается функция? Может быть, что какой-то скрипт в кроне фигачит по всем доступным базам? Настройки изоляции какие? Версия какая? Функция не перегружена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 16:53 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
qwwqUNIQUE по name не наблюдаю.Противоречий в показаниях пациента хватает. Но это не отменяет бесполезность проверяющего селекта перед инсертом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 16:56 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
p2., согласен. не хватает либо unique + exception when unique_violation или модного INSERT ... ON CONFLICT ... а так -- он просто руками вставил в id , думаецца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 17:05 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинЕсть таблица и функция, ошибка добулирования значения ключа возникает странно и неопределенно, скажем сделал новую базу, первый раз вызвал функцию, получил ошибку, тут же второй раз вызываю - ошибки нет Как такая ошибка может возникнуть в принципе в такой функции, там же проверка вроде есть? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. если дублирование u_id то у вас в свежей базе в public.u_names уже что то внесено и какие то u_id использованы (скорее всего 1) а значение sequence для u_id SERIAL - равно нулю вот первый раз вы и получаете ошибку пока оно sequence прокручивает. Почитайте про внутреннюю организацию serial: https://www.postgresql.org/docs/9.5/static/datatype-numeric.html#DATATYPE-SERIAL -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 20:22 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
[quot p2.]qwwqНо это не отменяет бесполезность проверяющего селекта перед инсертом. От уровня изоляции зависит. На SERIALIZABLE полезен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 09:29 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous2, //умного учить, только портить, жгите дальше но там же будет в той же ситуации (конкурирующий коммит после старта) тот же эксепшен, только уже про пробитие уровня изоляции, а не уникъю. нет ? PS поцгресс атлично протекает на ддл-ях по уровням изоляции. во первых при накате ддл ф--й. во вторых -- по криейт тейбл (второе -- по крайней -- в рипитебл , дальше стало не интересно). печаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 10:26 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
Maxim BogukРолг ХупинЕсть таблица и функция, ошибка добулирования значения ключа возникает странно и неопределенно, скажем сделал новую базу, первый раз вызвал функцию, получил ошибку, тут же второй раз вызываю - ошибки нет Как такая ошибка может возникнуть в принципе в такой функции, там же проверка вроде есть? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. если дублирование u_id то у вас в свежей базе в public.u_names уже что то внесено и какие то u_id использованы (скорее всего 1) а значение sequence для u_id SERIAL - равно нулю вот первый раз вы и получаете ошибку пока оно sequence прокручивает. Почитайте про внутреннюю организацию serial: https://www.postgresql.org/docs/9.5/static/datatype-numeric.html#DATATYPE-SERIAL -- Maxim Boguk www.postgresql-consulting.ru в точку! спасибо! генератор скриптов прикрутил в конце - все sequence стартуют с 1, а в некоторых таблицах уже есть данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 13:35 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
qwwqPgSQLanonymous2, //умного учить, только портить, жгите дальше Чему у Вас учиться-то, гланды автогеном удалять? ;) qwwqно там же будет в той же ситуации (конкурирующий коммит после старта) тот же эксепшен, только уже про пробитие уровня изоляции, а не уникъю. нет ? Да, и в этом-то и радость. Когда транзакция получает duplicate key, непонятно, "настоящий" он или из-за соседней транзакции, в отличие от "про пробитие уровня изоляции". qwwqPS поцгресс атлично протекает на ддл-ях по уровням изоляции. во первых при накате ддл ф--й. во вторых -- по криейт тейбл (второе -- по крайней -- в рипитебл , дальше стало не интересно). печаль. А пример(ы) можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 18:35 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous2Когда транзакция получает duplicate key, непонятно, "настоящий" он или из-за соседней транзакцииПоясни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 18:40 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous2А пример(ы) можно? бисер вам противопоказан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 19:00 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
p2.PgSQLanonymous2Когда транзакция получает duplicate key, непонятно, "настоящий" он или из-за соседней транзакцииПоясни. -- Версия PostgreSQL 9.5.0, если что. Цифрами обозначены транзакции. CREATE TABLE Test(n INT PRIMARY KEY, v INT NOT NULL); 1. BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; 1. INSERT INTO Test VALUES (1, 2); 2. BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; 2. SAVEPOINT a; 2. INSERT INTO Test VALUES (1, 3); 1. COMMIT; Далее 2 получает: ERROR: duplicate key value violates unique constraint "test_pkey" -- Хмм, ну значит такая запись есть, сейчас обновим: . ROLLBACK TO a; . UPDATE Test SET v = 3 WHERE n = 1; Query returned successfully: 0 rows affected ... Что?! Что ты несёшь, PostgreSQL? Запись есть, но её нет!? ;) А если серьёзнее, в случае возникновения подобной ситуации непонятно, то ли действительно уже существовала эта запись, то ли другая транзакция "удружила". Если в этой ситуации возникает serialization failure, можно повторять транзакцию, что особенно удобно, если уже есть какой-то framework для обработки исключительных ситуаций при работе с СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 20:02 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
p2.qwwqUNIQUE по name не наблюдаю.Противоречий в показаниях пациента хватает. Но это не отменяет бесполезность проверяющего селекта перед инсертом. да, уберу, это "отрыжка" T-SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 20:03 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
qwwqp2., UNIQUE по name не наблюдаю. хмм, да, есть смысл добавить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 20:07 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous2, Если можно, прокомментируйте мою функцию, если она бдцует вызываться многими юзерами, я уровень изоляции не менял, дефолтный. Есть ли смысл что-то в ней менять? Хочу понять принципиально, может есть какой-то Best practice стиль написания функций, который мне не известен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 20:11 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинPgSQLanonymous2, Если можно, прокомментируйте мою функцию, если она бдцует вызываться многими юзерами, Нельзя. ;) Вот из-за этого: Ролг Хупиня уровень изоляции не менял, дефолтный. Вы выбрали свой путь, так и идите по нему до конца, а я лично считаю, что "this is the road to hell". Можете поучиться у qwwq вырезанию гланд автогеном. ;) Ролг ХупинЕсть ли смысл что-то в ней менять? Хочу понять принципиально, может есть какой-то Best practice стиль написания функций, который мне не известен Да, есть, и он описан вот здесь: https://www.postgresql.org/docs/current/static/transaction-iso.html#XACT-SERIALIZABLE (Ну а сейчас Вам тут, наверное, расскажут, что всё это чушь, и разработчики PostgreSQL в этом ничего не понимают, а делать надо наоборот.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 22:12 |
|
||
|
Duplicate key - откуда?
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous2Ролг ХупинPgSQLanonymous2, Если можно, прокомментируйте мою функцию, если она бдцует вызываться многими юзерами, Нельзя. ;) Вот из-за этого: Ролг Хупиня уровень изоляции не менял, дефолтный. Вы выбрали свой путь, так и идите по нему до конца, а я лично считаю, что "this is the road to hell". Можете поучиться у qwwq вырезанию гланд автогеном. ;) Ролг ХупинЕсть ли смысл что-то в ней менять? Хочу понять принципиально, может есть какой-то Best practice стиль написания функций, который мне не известен Да, есть, и он описан вот здесь: https://www.postgresql.org/docs/current/static/transaction-iso.html#XACT-SERIALIZABLE (Ну а сейчас Вам тут, наверное, расскажут, что всё это чушь, и разработчики PostgreSQL в этом ничего не понимают, а делать надо наоборот.) как минимум про гланды - не, это не наш путь, пусть сам рвёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2016, 22:48 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=1997051]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 294ms |

| 0 / 0 |
