Article View: pl.comp.lang.delphi.bazy-danych
Article #82698Re: FireDac, MSSQL na komputerze z XE6 nie rzuca wyjątkiem (3604): Duplicate key was ignored.
From: wloochacz
Date: Fri, 05 Aug 2016 12:46
Date: Fri, 05 Aug 2016 12:46
43 lines
3176 bytes
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-mailReferences:
<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