powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Simple post raises error codes -312/-400 using Firebird 3.0
36 сообщений из 36, показаны все 2 страниц
Simple post raises error codes -312/-400 using Firebird 3.0
    #39491946
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The error happened after migrating from FB 2.1 to FB 3.
Simple post to edit data in debug mode raises the exception:
The error states: Exception class EFDDBEngineException with message [FireDAC][Phys][FB_30]-312 Exact update affected [0] rows, while [1] was requested.
If I hit "Continue" button then another exception raises:
The error states: Exception class EFDException with message [FireDAC][Phys][FB_30]-400 Update command updated [0] rows, instead of [1] record. Possible reasons: update does not have PK or row identifier, record has been changed/deleted by another user.

The table has PK as company id, no null value, unique key, I used DB on my computer so nobody can use it. Without debugger no exception raised. Under FB 2.1 the same function executed OK.
Data is not saved under debug! Under exe mode no exception raised but data not saved.

This is really really BIG PROBLEM!

I extracted tracing data from file below up to errors:
==================================================
--- new start of FireDAC Trace ---
70877486142 15:30:33.779 -=#!!! FireDAC Tracer started !!!#=-
70877486275 15:30:33.779 >> StartTransaction [ConnectionDef="FB_GENESIS_LOCAL"]
70877486367 15:30:33.779 . isc_start_multiple [count=1, params="write,read_committed,rec_version,nowait"]
70877492877 15:30:33.781 << StartTransaction [ConnectionDef="FB_GENESIS_LOCAL"]
70877497615 15:30:33.782 >> TFDCustomCommand.Prepare [Command="SELECT A.*, A.RDB$DB_KEY AS FD__DB_KEY
FROM COMPANY A
"]
70877497649 15:30:33.782 . CreateCommand [ConnectionDef="FB_GENESIS_LOCAL"]
70877497835 15:30:33.782 . Preprocessed [CMD="SELECT A.*, A.RDB$DB_KEY AS FD__DB_KEY
FROM COMPANY A
", FROM="COMPANY", VP=0, VPE=0, OBP=0, CK=1]
70877497871 15:30:33.782 << TFDCustomCommand.Prepare [Command="SELECT A.*, A.RDB$DB_KEY AS FD__DB_KEY
FROM COMPANY A
"]
70877502855 15:30:33.784 >> Process [LimitToTable="COMPANY"]
70877502895 15:30:33.784 >> Lock [ARow.Table.Name="COMPANY"]
70877502918 15:30:33.784 << Lock [ARow.Table.Name="COMPANY"]
70877502945 15:30:33.784 >> Update [ARow.Table.Name="COMPANY"]
70877502996 15:30:33.784 . CreateCommand [ConnectionDef="FB_GENESIS_LOCAL"]
70877504605 15:30:33.784 . Preprocessed [CMD="UPDATE COMPANY
SET STREET_1 = ?
WHERE CUST_NO = ? AND COMPANY_NAME = ? AND
CONTACT_FIRST IS NULL AND CONTACT_SECOND IS NULL AND PHONE_NO IS NULL AND
STREET_1 = ? AND STREET_2 IS NULL AND CITY IS NULL AND
STATE_PROVINCE IS NULL AND COUNTRY = ? AND POSTAL_CODE IS NULL AND
FAX_NO IS NULL AND STREET_3 IS NULL AND E_MAIL IS NULL AND
CUST_TYPE = ? AND BUS_TYPE IS NULL AND LAST_ORDER_DAY IS NULL AND
THIS_YEAR_SALES IS NULL AND LAST_YEAR_SALES IS NULL AND
YEAR_BEFORE_LAST_SALES IS NULL AND REMARKS IS NULL AND LABEL IS NULL AND
PERCENT_DISCOUNT IS NULL AND CREDIT_APPROVED = ? AND
REP IS NULL AND CREDIT_PROBLEMS = ? AND
DAY_START = ? AND CATEGORY = ? AND
BILL_COMPANY_NAME IS NULL AND BILL_STREET_1 IS NULL AND
BILL_STREET_2 IS NULL AND BILL_STREET_3 IS NULL AND BILL_CITY IS NULL AND
BILL_STATE_PROVINCE IS NULL AND BILL_POSTAL_CODE IS NULL AND
BILL_COUNTRY IS NULL AND BILL_PHONE_NO IS NULL AND BILL_FAX_NO IS NULL AND
BILL_CONTACT_FIRST IS NULL AND BILL_CONTACT_SECOND IS NULL AND
CUST_ACTIVE = ? AND USE_MAIN4BILL = ? AND
REP_CREDIT = ? AND INDUSTRY IS NULL AND SHIP_TYPE = ? AND
SHIP_NUMBER IS NULL AND SR_NO = ? AND CREDIT_LINE IS NULL AND
RDB$DB_KEY = ?", FROM="", VP=0, VPE=0, OBP=0, CK=7]
70877504648 15:30:33.784 >> ProcessRequest [ARow.Table.Name="COMPANY"]
70877504786 15:30:33.784 >> Prepare [Command="UPDATE COMPANY
SET STREET_1 = :NEW_STREET_1
WHERE CUST_NO = :OLD_CUST_NO AND COMPANY_NAME = :OLD_COMPANY_NAME AND
CONTACT_FIRST IS NULL AND CONTACT_SECOND IS NULL AND PHONE_NO IS NULL AND
STREET_1 = :OLD_STREET_1 AND STREET_2 IS NULL AND CITY IS NULL AND
STATE_PROVINCE IS NULL AND COUNTRY = :OLD_COUNTRY AND POSTAL_CODE IS NULL AND
FAX_NO IS NULL AND STREET_3 IS NULL AND E_MAIL IS NULL AND
CUST_TYPE = :OLD_CUST_TYPE AND BUS_TYPE IS NULL AND LAST_ORDER_DAY IS NULL AND
THIS_YEAR_SALES IS NULL AND LAST_YEAR_SALES IS NULL AND
YEAR_BEFORE_LAST_SALES IS NULL AND REMARKS IS NULL AND LABEL IS NULL AND
PERCENT_DISCOUNT IS NULL AND CREDIT_APPROVED = :OLD_CREDIT_APPROVED AND
REP IS NULL AND CREDIT_PROBLEMS = :OLD_CREDIT_PROBLEMS AND
DAY_START = :OLD_DAY_START AND CATEGORY = :OLD_CATEGORY AND
BILL_COMPANY_NAME IS NULL AND BILL_STREET_1 IS NULL AND
BILL_STREET_2 IS NULL AND BILL_STREET_3 IS NULL AND BILL_CITY IS NULL AND
BILL_STATE_PROVINCE IS NULL AND BILL_POSTAL_CODE IS NULL AND
BILL_COUNTRY IS NULL AND BILL_PHONE_NO IS NULL AND BILL_FAX_NO IS NULL AND
BILL_CONTACT_FIRST IS NULL AND BILL_CONTACT_SECOND IS NULL AND
CUST_ACTIVE = :OLD_CUST_ACTIVE AND USE_MAIN4BILL = :OLD_USE_MAIN4BILL AND
REP_CREDIT = :OLD_REP_CREDIT AND INDUSTRY IS NULL AND SHIP_TYPE = :OLD_SHIP_TYPE AND
SHIP_NUMBER IS NULL AND SR_NO = :OLD_SR_NO AND CREDIT_LINE IS NULL AND
RDB$DB_KEY = :OLD_DB_KEY"]
70877505037 15:30:33.784 . Preprocessed [CMD="UPDATE COMPANY
SET STREET_1 = ?
WHERE CUST_NO = ? AND COMPANY_NAME = ? AND
CONTACT_FIRST IS NULL AND CONTACT_SECOND IS NULL AND PHONE_NO IS NULL AND
STREET_1 = ? AND STREET_2 IS NULL AND CITY IS NULL AND
STATE_PROVINCE IS NULL AND COUNTRY = ? AND POSTAL_CODE IS NULL AND
FAX_NO IS NULL AND STREET_3 IS NULL AND E_MAIL IS NULL AND
CUST_TYPE = ? AND BUS_TYPE IS NULL AND LAST_ORDER_DAY IS NULL AND
THIS_YEAR_SALES IS NULL AND LAST_YEAR_SALES IS NULL AND
YEAR_BEFORE_LAST_SALES IS NULL AND REMARKS IS NULL AND LABEL IS NULL AND
PERCENT_DISCOUNT IS NULL AND CREDIT_APPROVED = ? AND
REP IS NULL AND CREDIT_PROBLEMS = ? AND
DAY_START = ? AND CATEGORY = ? AND
BILL_COMPANY_NAME IS NULL AND BILL_STREET_1 IS NULL AND
BILL_STREET_2 IS NULL AND BILL_STREET_3 IS NULL AND BILL_CITY IS NULL AND
BILL_STATE_PROVINCE IS NULL AND BILL_POSTAL_CODE IS NULL AND
BILL_COUNTRY IS NULL AND BILL_PHONE_NO IS NULL AND BILL_FAX_NO IS NULL AND
BILL_CONTACT_FIRST IS NULL AND BILL_CONTACT_SECOND IS NULL AND
CUST_ACTIVE = ? AND USE_MAIN4BILL = ? AND
REP_CREDIT = ? AND INDUSTRY IS NULL AND SHIP_TYPE = ? AND
SHIP_NUMBER IS NULL AND SR_NO = ? AND CREDIT_LINE IS NULL AND
RDB$DB_KEY = ?", FROM="", VP=0, VPE=0, OBP=0, CK=7]
70877505076 15:30:33.784 . isc_dsql_allocate_statement [db_handle=$00000001]
70877505123 15:30:33.784 . isc_dsql_prepare [tra_handle=$0000003B, stmt_handle=$0000004F, sql="UPDATE COMPANY
SET STREET_1 = ?
WHERE CUST_NO = ? AND COMPANY_NAME = ? AND
CONTACT_FIRST IS NULL AND CONTACT_SECOND IS NULL AND PHONE_NO IS NULL AND
STREET_1 = ? AND STREET_2 IS NULL AND CITY IS NULL AND
STATE_PROVINCE IS NULL AND COUNTRY = ? AND POSTAL_CODE IS NULL AND
FAX_NO IS NULL AND STREET_3 IS NULL AND E_MAIL IS NULL AND
CUST_TYPE = ? AND BUS_TYPE IS NULL AND LAST_ORDER_DAY IS NULL AND
THIS_YEAR_SALES IS NULL AND LAST_YEAR_SALES IS NULL AND
YEAR_BEFORE_LAST_SALES IS NULL AND REMARKS IS NULL AND LABEL IS NULL AND
PERCENT_DISCOUNT IS NULL AND CREDIT_APPROVED = ? AND
REP IS NULL AND CREDIT_PROBLEMS = ? AND
DAY_START = ? AND CATEGORY = ? AND
BILL_COMPANY_NAME IS NULL AND BILL_STREET_1 IS NULL AND
BILL_STREET_2 IS NULL AND BILL_STREET_3 IS NULL AND BILL_CITY IS NULL AND
BILL_STATE_PROVINCE IS NULL AND BILL_POSTAL_CODE IS NULL AND
BILL_COUNTRY IS NULL AND BILL_PHONE_NO IS NULL AND BILL_FAX_NO IS NULL AND
BILL_CONTACT_FIRST IS NULL AND BILL_CONTACT_SECOND IS NULL AND
CUST_ACTIVE = ? AND USE_MAIN4BILL = ? AND
REP_CREDIT = ? AND INDUSTRY IS NULL AND SHIP_TYPE = ? AND
SHIP_NUMBER IS NULL AND SR_NO = ? AND CREDIT_LINE IS NULL AND
RDB$DB_KEY = ?", dialect=3]
70877507063 15:30:33.785 . isc_dsql_sql_info [stmt_handle=$0000004F, info=21]
70877507094 15:30:33.785 . isc_dsql_describe_bind [stmt_handle=$0000004F, dialect=3]
70877507153 15:30:33.785 . isc_dsql_describe_bind [stmt_handle=$0000004F, dialect=3]
70877507305 15:30:33.785 << Prepare [Command="UPDATE COMPANY
SET STREET_1 = :NEW_STREET_1
WHERE CUST_NO = :OLD_CUST_NO AND COMPANY_NAME = :OLD_COMPANY_NAME AND
CONTACT_FIRST IS NULL AND CONTACT_SECOND IS NULL AND PHONE_NO IS NULL AND
STREET_1 = :OLD_STREET_1 AND STREET_2 IS NULL AND CITY IS NULL AND
STATE_PROVINCE IS NULL AND COUNTRY = :OLD_COUNTRY AND POSTAL_CODE IS NULL AND
FAX_NO IS NULL AND STREET_3 IS NULL AND E_MAIL IS NULL AND
CUST_TYPE = :OLD_CUST_TYPE AND BUS_TYPE IS NULL AND LAST_ORDER_DAY IS NULL AND
THIS_YEAR_SALES IS NULL AND LAST_YEAR_SALES IS NULL AND
YEAR_BEFORE_LAST_SALES IS NULL AND REMARKS IS NULL AND LABEL IS NULL AND
PERCENT_DISCOUNT IS NULL AND CREDIT_APPROVED = :OLD_CREDIT_APPROVED AND
REP IS NULL AND CREDIT_PROBLEMS = :OLD_CREDIT_PROBLEMS AND
DAY_START = :OLD_DAY_START AND CATEGORY = :OLD_CATEGORY AND
BILL_COMPANY_NAME IS NULL AND BILL_STREET_1 IS NULL AND
BILL_STREET_2 IS NULL AND BILL_STREET_3 IS NULL AND BILL_CITY IS NULL AND
BILL_STATE_PROVINCE IS NULL AND BILL_POSTAL_CODE IS NULL AND
BILL_COUNTRY IS NULL AND BILL_PHONE_NO IS NULL AND BILL_FAX_NO IS NULL AND
BILL_CONTACT_FIRST IS NULL AND BILL_CONTACT_SECOND IS NULL AND
CUST_ACTIVE = :OLD_CUST_ACTIVE AND USE_MAIN4BILL = :OLD_USE_MAIN4BILL AND
REP_CREDIT = :OLD_REP_CREDIT AND INDUSTRY IS NULL AND SHIP_TYPE = :OLD_SHIP_TYPE AND
SHIP_NUMBER IS NULL AND SR_NO = :OLD_SR_NO AND CREDIT_LINE IS NULL AND
RDB$DB_KEY = :OLD_DB_KEY"]
70877507383 15:30:33.785 >> Execute [Command="UPDATE COMPANY
SET STREET_1 = :NEW_STREET_1
WHERE CUST_NO = :OLD_CUST_NO AND COMPANY_NAME = :OLD_COMPANY_NAME AND
CONTACT_FIRST IS NULL AND CONTACT_SECOND IS NULL AND PHONE_NO IS NULL AND
STREET_1 = :OLD_STREET_1 AND STREET_2 IS NULL AND CITY IS NULL AND
STATE_PROVINCE IS NULL AND COUNTRY = :OLD_COUNTRY AND POSTAL_CODE IS NULL AND
FAX_NO IS NULL AND STREET_3 IS NULL AND E_MAIL IS NULL AND
CUST_TYPE = :OLD_CUST_TYPE AND BUS_TYPE IS NULL AND LAST_ORDER_DAY IS NULL AND
THIS_YEAR_SALES IS NULL AND LAST_YEAR_SALES IS NULL AND
YEAR_BEFORE_LAST_SALES IS NULL AND REMARKS IS NULL AND LABEL IS NULL AND
PERCENT_DISCOUNT IS NULL AND CREDIT_APPROVED = :OLD_CREDIT_APPROVED AND
REP IS NULL AND CREDIT_PROBLEMS = :OLD_CREDIT_PROBLEMS AND
DAY_START = :OLD_DAY_START AND CATEGORY = :OLD_CATEGORY AND
BILL_COMPANY_NAME IS NULL AND BILL_STREET_1 IS NULL AND
BILL_STREET_2 IS NULL AND BILL_STREET_3 IS NULL AND BILL_CITY IS NULL AND
BILL_STATE_PROVINCE IS NULL AND BILL_POSTAL_CODE IS NULL AND
BILL_COUNTRY IS NULL AND BILL_PHONE_NO IS NULL AND BILL_FAX_NO IS NULL AND
BILL_CONTACT_FIRST IS NULL AND BILL_CONTACT_SECOND IS NULL AND
CUST_ACTIVE = :OLD_CUST_ACTIVE AND USE_MAIN4BILL = :OLD_USE_MAIN4BILL AND
REP_CREDIT = :OLD_REP_CREDIT AND INDUSTRY IS NULL AND SHIP_TYPE = :OLD_SHIP_TYPE AND
SHIP_NUMBER IS NULL AND SR_NO = :OLD_SR_NO AND CREDIT_LINE IS NULL AND
RDB$DB_KEY = :OLD_DB_KEY", ATimes=0, AOffset=0]
70877507468 15:30:33.785 >> Sent
70877507514 15:30:33.785 . Var [N=0, Name="NEW_STREET_1", Type=SQL_VARYING, Prec=0, Scale=0, Size=30, Data(0)='123 TEST STREET']
70877507540 15:30:33.785 . Var [N=1, Name="OLD_CUST_NO", Type=SQL_LONG, Prec=0, Scale=0, Size=4, Data(0)=24580]
70877507577 15:30:33.785 . Var [N=2, Name="OLD_COMPANY_NAME", Type=SQL_VARYING, Prec=0, Scale=0, Size=45, Data(0)='TEST']
70877507614 15:30:33.785 . Var [N=3, Name="OLD_STREET_1", Type=SQL_VARYING, Prec=0, Scale=0, Size=30, Data(0)='123']
70877507650 15:30:33.785 . Var [N=4, Name="OLD_COUNTRY", Type=SQL_VARYING, Prec=0, Scale=0, Size=15, Data(0)='USA']
70877507687 15:30:33.785 . Var [N=5, Name="OLD_CUST_TYPE", Type=SQL_VARYING, Prec=0, Scale=0, Size=10, Data(0)='REGULAR']
70877507724 15:30:33.785 . Var [N=6, Name="OLD_CREDIT_APPROVED", Type=SQL_VARYING, Prec=0, Scale=0, Size=3, Data(0)='NO']
70877507755 15:30:33.785 . Var [N=7, Name="OLD_CREDIT_PROBLEMS", Type=SQL_VARYING, Prec=0, Scale=0, Size=3, Data(0)='NO']
70877507800 15:30:33.785 . Var [N=8, Name="OLD_DAY_START", Type=SQL_TIMESTAMP, Prec=0, Scale=0, Size=8, Data(0)=7/17/2017]
70877507827 15:30:33.785 . Var [N=9, Name="OLD_CATEGORY", Type=SQL_LONG, Prec=0, Scale=0, Size=4, Data(0)=1]
70877507865 15:30:33.785 . Var [N=10, Name="OLD_CUST_ACTIVE", Type=SQL_TEXT, Prec=0, Scale=0, Size=1, Data(0)='Y']
70877507895 15:30:33.785 . Var [N=11, Name="OLD_USE_MAIN4BILL", Type=SQL_TEXT, Prec=0, Scale=0, Size=1, Data(0)='Y']
70877507931 15:30:33.785 . Var [N=12, Name="OLD_REP_CREDIT", Type=SQL_TEXT, Prec=0, Scale=0, Size=1, Data(0)='N']
70877507966 15:30:33.785 . Var [N=13, Name="OLD_SHIP_TYPE", Type=SQL_TEXT, Prec=0, Scale=0, Size=1, Data(0)='C']
70877508002 15:30:33.785 . Var [N=14, Name="OLD_SR_NO", Type=SQL_LONG, Prec=0, Scale=0, Size=4, Data(0)=0]
70877508037 15:30:33.785 . Var [N=15, Name="OLD_DB_KEY", Type=SQL_TEXT, Prec=0, Scale=0, Size=8, Data(0)='« '']
70877508057 15:30:33.785 << Sent
70877508071 15:30:33.785 . isc_dsql_execute2 [tra_handle=$0000003B, stmt_handle=$0000004F, dialect=3]
70877508249 15:30:33.785 . isc_dsql_sql_info [stmt_handle=$0000004F, info=23]
70877675160 15:30:33.836 . Array DML failed: [FireDAC][Phys][FB_V30]-312. Exact update affected [0] rows, while [1] was requested
70877675273 15:30:33.836 << Execute [Command="UPDATE COMPANY
SET STREET_1 = :NEW_STREET_1
WHERE CUST_NO = :OLD_CUST_NO AND COMPANY_NAME = :OLD_COMPANY_NAME AND
CONTACT_FIRST IS NULL AND CONTACT_SECOND IS NULL AND PHONE_NO IS NULL AND
STREET_1 = :OLD_STREET_1 AND STREET_2 IS NULL AND CITY IS NULL AND
STATE_PROVINCE IS NULL AND COUNTRY = :OLD_COUNTRY AND POSTAL_CODE IS NULL AND
FAX_NO IS NULL AND STREET_3 IS NULL AND E_MAIL IS NULL AND
CUST_TYPE = :OLD_CUST_TYPE AND BUS_TYPE IS NULL AND LAST_ORDER_DAY IS NULL AND
THIS_YEAR_SALES IS NULL AND LAST_YEAR_SALES IS NULL AND
YEAR_BEFORE_LAST_SALES IS NULL AND REMARKS IS NULL AND LABEL IS NULL AND
PERCENT_DISCOUNT IS NULL AND CREDIT_APPROVED = :OLD_CREDIT_APPROVED AND
REP IS NULL AND CREDIT_PROBLEMS = :OLD_CREDIT_PROBLEMS AND
DAY_START = :OLD_DAY_START AND CATEGORY = :OLD_CATEGORY AND
BILL_COMPANY_NAME IS NULL AND BILL_STREET_1 IS NULL AND
BILL_STREET_2 IS NULL AND BILL_STREET_3 IS NULL AND BILL_CITY IS NULL AND
BILL_STATE_PROVINCE IS NULL AND BILL_POSTAL_CODE IS NULL AND
BILL_COUNTRY IS NULL AND BILL_PHONE_NO IS NULL AND BILL_FAX_NO IS NULL AND
BILL_CONTACT_FIRST IS NULL AND BILL_CONTACT_SECOND IS NULL AND
CUST_ACTIVE = :OLD_CUST_ACTIVE AND USE_MAIN4BILL = :OLD_USE_MAIN4BILL AND
REP_CREDIT = :OLD_REP_CREDIT AND INDUSTRY IS NULL AND SHIP_TYPE = :OLD_SHIP_TYPE AND
SHIP_NUMBER IS NULL AND SR_NO = :OLD_SR_NO AND CREDIT_LINE IS NULL AND
RDB$DB_KEY = :OLD_DB_KEY", ATimes=1, AOffset=0, RowsAffected=0, RowsAffectedReal=True, ErrorAction=0]
70877675542 15:30:33.836 . [FireDAC][DApt]-400. Update command updated [0] instead of [1] record. Possible reasons: update table does not have PK or row identifier, record has been changed/deleted by another user
==================================================
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39491968
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The updating condition after WHERE is very difficult. I think, this difficult condition is false because some of its parts are false.
I cannot understand, is this query used when you try to edit one record in editing window of client program?
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492511
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ясен пень у него запрос какой-то автосгенерённый.

P.S. FredFF, try to change your where clause to
WHERE company_id = :OLD_company_id
and check what will happen.

P.P.S. This is not FB-side problem, this is
client-side (Delphi, FireDAC etc) problem.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492597
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

I am using Delphi components to post changed data to Address1 field of COMPANY table. It was working under Firebird 2.1 but the same code raises exception in debug mode (no debug mode - no exception) but in both cases under Firebird 3 data is not saved, so I decided to trace the issue with FireDAC monitoring controls which creates FlatFile which data I posted. All that queries are auto-generated by Firebird - on my site I only run save command for COMPANY table with CachedUpdates property ON:
procedure TFormMenu.SaveUpdatesTo(MyTable : TFDTable);
begin
with MyTable do
if not DM.Genesis.InTransaction then
begin
DM.Genesis.StartTransaction;
try
ApplyUpdates; {try to write the updates to the database}
DM.Genesis.Commit; {on success, commit the changes}
except
DM.Genesis.Rollback; {on failure, undo the changes}
raise; {raise the exception to prevent a call to CommitUpdates!}
end;
CommitUpdates; {on success, clear the cache}
end else ApplyUpdates;
end;

Under FB 2.1 Dialect 1 changes are saved, under FB 3.0 Dialect 3 - not.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492605
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFFUnder FB 2.1 Dialect 1 changes are saved, under FB 3.0 Dialect 3 - not.

There is nothing to wonder at with such ridiculous update query and DATE/TIMESTAMP filed
mismatch.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492608
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFF> All that queries are auto-generated by Firebird

Firebird doesn't "auto-generate" any queries at all. :)
It is FireDAC's auto-generated queries. Try to set
UpdateOptions.KeyFields property manually
(to your PK) and check.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492635
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,
I added manually CUST_NO as PK to KeyFields - still raises errors. No difference
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492638
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFFNo difference

Rent a programmer.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492640
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

It's not clear what do you mean issue with TIMESTAMP?
DAY_START was type DATE for Dialect 1 and it's converted to TIMESTAMP for Dialect 3. How it affects transaction to fail? Data value is proper for DAY_START -> '7/17/2017'
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492641
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Любезный,

I used a program to save update to one record which failed. I try to trace the issue and got flatfile with values that I extracted. The query generated by FireDAC - not a program.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492653
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFF> I added manually CUST_NO as PK
FredFF> to KeyFields - still raises errors. No difference

You've said that "company id" is PK, not CUST_NO...
Make sure UpdateMode=upWhereKeyOnly and show
new trace-file.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492671
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторI used a program to save update to one record which failed. I try to trace the issue and got flatfile with values that I extracted. The query generated by FireDAC - not a program.
I don't work with FireDAC. But I see that query automatic generation is very bad.
To update one record, it's more right to use query with onest condition - the primary key value. I don't know about presenting a feature to execute simple query in FireDAC, such as TIBSQL component in InterBase Express component set. If similar component is presents in FireDAC, I recommend you to use it with manual query writing.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492706
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

Thanks but it's not enough. I solved this issue in two steps (both required):
1) Change UpdateOptions.UpdateMode to upWhereKeyOnly
2) Remove all fields and add them back along with events

Any better way?
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39492732
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFF> Thanks but it's not enough.

What "it"? :) I told you set UpdateMode and KeyFields earlier :)

> 0) I solved this issue in two steps (both required):
> 1) Change UpdateOptions.UpdateMode to upWhereKeyOnly
> 2) Remove all fields and add them back along with events

0) Not exactly required. There are other ways.
1) AFAIK, it is default value. Did someone
change it not realizing what he was doing? :)
2) AFAIU, it just sets "PK" flag for the field.
Don't know why it wasn't set before though -
may be you've changed it manually...

> Any better way?

If it works - don't change anything, let it be. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39494187
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFFUnder FB 2.1 Dialect 1 changes are saved, under FB 3.0 Dialect 3 - not.

so you have two possible factors, FB version and SQL Dialect

"divide et empera", eliminate one factor and try it with FB2.1 and Dialect 3
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39494209
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты бы ещё через неделю с этой глупостью опомнился.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495569
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

Unfortunately it's not universal solution. I cannot create new record or update old one if my table has no PK and only unique index with two fields like QUOTE_NO (Integer) and REV_NO (Varchar(1) ). What should I do resolve this issue?
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495577
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFF> if my table has no PK <skipped>
FredFF> What should I do resolve this issue?

If your table has no PK - you should create it.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495666
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,
Thanks, but I think it's not right to force FB3's end-user to make PK if it was not required for FB 2.1.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495671
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFFГаджимурадов Рустам,
Thanks, but I think it's not right to force FB3's end-user to make PK if it was not required for FB 2.1.

Table without PK is nonsence. PK is the only way to exactly define record. Unique key and unique index have the only one contrast - they allows NULLs. PK can be multy-segment the same way as Unique.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495672
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
You've asked sollution - I've suggested the best one.

And it's not "required", it's just general advice for any RDBMS.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495673
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ты ему щас наподсказываешь про multy-segment-то.
Он возьмёт и зафигачит поверх своих UK такой же PK.
Проще уж тогда тупо на клиенте пропертю обмануть.

Но это напоследок подскажем, если он по русски не бачит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495674
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНу ты ему щас наподсказываешь про multy-segment-то.
Он возьмёт и зафигачит поверх своих UK такой же PK.
Проще уж тогда тупо на клиенте пропертю обмануть.

Но это напоследок подскажем, если он по русски не бачит.


Ну а чё, у меня в подсистеме взаимодействия с таможней и пятисегментные PK были Она умеет столько гитик, не меньше науки
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495676
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой ты, хочешь буржуя на неправильную дорогу направить. :)
И вообще, полчетвертого утра, спать ложись давай, тебе завтра
утром на работу не вставать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495867
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаTable without PK is nonsence. PK is the only way to exactly define record

PK is the only sure way to identify specific row ACROSS SESSIONS, in persistent mode

However for short sessions RDB$DB_KEY might be enough, if to account for its quirks and limitations.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39495875
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFFI think it's not right to force FB3's end-user to make PK if it was not required for FB 2.1.

You do not know if it is related to FB version or to something else.

100% of succumbed persons were seen at least once eating cucumbers. Let's now induce cucumbers are poison.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496283
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch,

I added PK to table - the same as unique index - and it's working for FB 3. I just need to set property in Delphi TFDTable UpdateOptions upWhereKeyOnly and set ProviderFlags = [pfInUpdate,pfInWhere, pfInKey ] for PK fields.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496287
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFFand it's working for FB 3.
it's working for FireDAC. Firebird does not need PK, Unique, and your database itself. :-)

p.s. unique is not a PK. It's an "alternate key", in addition to PK.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496289
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFF,

also I need to add that in Firebird, and in Interbase, there are none differences of how UNIQUE and PK works, at least since 1994. Syntax and behavior is the same.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496295
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFF> I added PK to table - the same as unique index - and it's working for FB 3.

Саш, я ж говорил - наподсказываешь ему щас.
Как пить дать, нашу мову разумеет, но виду не кажет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496842
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

translate.ru и google.translate никто не отменял

а еще раньше был какой-то сайт, который полная копия форума, пропущенная через переводчик
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496844
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvthere are none differences of how UNIQUE and PK works, at least since 1994

Really? what about NULLs ?
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496856
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochReally? what about NULLs ?
this is one of exceptions, that can be ignored in this topic.
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496876
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch,

I don't need translator. Spasibo za pomosch. To be compatible with FireDAC for FB3 I have to create PK for each table. Otherwise new/edit record functioning is not working.

PS Delphi is not supporting FB 3
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496891
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFF> I have to create PK for each table.

Nice. Even if it would work without it.

> Otherwise new/edit record functioning is not working.

That's not true, actually. Client side just
need to know which fields are in PK.

> PS Delphi is not supporting FB 3

What?! FireDAC supports, FIBPlus supports,
IBDAC/UniDAC supports. And I'm pretty syre there
are other libs with FB3 supports (full or partial).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Simple post raises error codes -312/-400 using Firebird 3.0
    #39496914
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FredFFDelphi is not supporting FB 3
firebird 3 have old client API and new API. New API not used by any components, but old api compatible with all previous Firebird versions, and InterBase.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Simple post raises error codes -312/-400 using Firebird 3.0
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]