🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #82698

Re: FireDac, MSSQL na komputerze z XE6 nie rzuca wyjątkiem (3604): Duplicate key was ignored.

#82698
From: wloochacz
Date: Fri, 05 Aug 2016 12:46
43 lines
3176 bytes
W dniu 2016-08-04 o 02:26, Jan Drawski pisze:
>> Przyczyna jest prosta; wstawisz wartość do pola, która już istnieje.
>> Na tym polu jest klucz (indeks) unikalny, który dopuszcza duplikaty (to
>> raczej mało sensowne ustawienie, ale może się przydać w specyficznych
>> przypadkach).
>> I wtedy będzie dokładnie tak jak opisujesz, poczytaj o opcji indeksu
>> IGNORE_DUP_KEY:
>> https://msdn.microsoft.com/en-us/library/ms186869.aspx
>
> To było zamierzone, nie ma potrzeby sprawdzania, czy już wcześniej
> zostało część danych przesłanych. Nie znalazłem w MSSQLu polecenia typu
> INSERT IGNORE, a ze sprawdzaniem każdego id czy istnieje nie chciało mi
> się bawić choć teraz zmieniłem podejście.
Na fatalne, imo.
MSSQL to nie MySQL mimo podobieństwa w nazwie - i całe szczęście.
Polecam jednak pobawienie się z tym, bo utrzymanie indeksu unikalnego 
który unikalnym nie jest "lekko" z czapy...

>>> Błąd wyskakuje na każdym komputerze jak korzystam np. z HeidiSQL.
>>> Błąd z FireDac:
>>> [FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver][SQL
>>> Server]Duplicate key was ignored.
>> Jak tak ustawiłeś bazę, to tak masz...
>
> Ta sama baza, ten sam komputer:
> - W HeidiSQL pojawia się okienko informujące o błędzie.
> - W programie napisanym w Delphi nie ma wyjątku.
> - W programie napisanym w Delphi (tym samym) są wyjątki przy innych
> błędach.
>
> Inny komputer, inna baza danych, ten sam program napisany w Delphi: jest
> ten wyjątek
>
> Poradziłem sobie obsługując id wyjątku, później w ogóle zmieniłem
> podejście. Nie wiem dlaczego program się tak zachowuje, oczekiwałbym, że
> albo zawsze będzie wyjątek albo nigdy a tu jest raz tak a raz inaczej.
A ustawienia bazy sprawdzałeś?
SET ANSI WARNINGS i podobne?
Na pewno masz różnice i stąd różnice w zachowaniu programu na różnych 
bazach danych.

-- 
wloochacz
Technical Details
Message-ID: <57a48a8e$0$15206$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!peer03.fr7!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <57a0cbf2$0$15189$65785112@news.neostrada.pl> <57a24a25$0$12541$65785112@news.neostrada.pl> <57a28bba$0$656$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!peer03.fr7!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: FireDac, MSSQL na komputerze z XE6 nie rzuca
 wyjątkiem (3604): Duplicate key was ignored.
Newsgroups: pl.comp.lang.delphi.bazy-danych
References: <57a0cbf2$0$15189$65785112@news.neostrada.pl> <57a24a25$0$12541$65785112@news.neostrada.pl> <57a28bba$0$656$65785112@news.neostrada.pl>
From: wloochacz <wloochacz@no.spam.gmail.com>
Date: Fri, 5 Aug 2016 14:46:05 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0
MIME-Version: 1.0
In-Reply-To: <57a28bba$0$656$65785112@news.neostrada.pl>
Lines: 43
Message-ID: <57a48a8e$0$15206$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.186.26.130
X-Trace: 1470401166 unt-rea-a-02.news.neostrada.pl 15206 79.186.26.130:49419
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Bytes: 3022
X-Received-Body-CRC: 2308604972
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit