Page 1 of 1
Record Locking Problem
Posted: Thu 03 Apr 2008 15:42
by ACS2000
Hi
I have read a lot of forum entries about record locking, but I seem to be the only person experiencing this problem

This is my first foray into InnoDB tables. Have always used MyISAM before.
edAccount is a TQuery.
When I run the following code:
if Mode='Edit' then
try
edAccount.Lock(lrImmediately);
edAccount.RefreshRecord;
edAccount.Edit;
except
on E: EMyError do
if E.ErrorCode=1205 then
begin
MsgDlg('This record is being edited by someone else.'#13'Please try again later.', ['Ok'], cmtWarning);
ModalResult:=mrCancel;
end;
end;
When the record is being edited the program waits the set time (I've set it to 5 secs), then the BDS debugger kicks up the EMySQLException and EMtError
#HY000Lock wait timeout exceeded; try restarting transaction
as expected. However, the program then hangs. Doesn't even get to the error handler.
The TQuery has already been set to FullRefresh = True
I have looked at the Demo and can't see anything wrong.
What have I done wrong? Is there a setting I have missed?
Posted: Mon 07 Apr 2008 07:02
by Dimon
If you call the Lock or the Edit methods for a record locked by other connection, on executing this operation MySQL server returns control and generates the error when the time, adjusted as the value of the innodb_lock_wait_timeout system variable, is up.
You should set the value of this variable in the MySQL server configuration file.
Posted: Tue 08 Apr 2008 08:12
by ACS2000
I have already set the
innodb_lock_wait_timeout=5
It's after the 5 sec wait that the error messages are displayed, but then the program hangs. Doesn't even get to the error handler in the program. Also, the component is a TMyQuery not TQuery.
Both this and the other problem I've posted are in the same form.
Posted: Tue 08 Apr 2008 09:41
by Dimon
We could not reproduce the problem.
Please send a complete small sample to dmitryg*crlab*com to demonstrate it, including script to create and fill table.
Also supply us the following information
- exact version of Delphi;
- exact version of MyDAC. You can see it in the About sheet of TMyConnection Editor;
- exact version of MySQL server and MySQL client. You can see it in the Info sheet of TMyConnection Editor.
Posted: Tue 08 Apr 2008 10:42
by ACS2000
Delphi BDS 2006 v10.0.2558.35231 Update 2, Hotfixed
MyDAC v5.20.1.14 for Delphi 2006
MySQL v5.0.21-community-nt
TMyConnection - Direct
I have found the problem is when the Lock command is processed, it doesn't get as far as the Edit command.
Below is the MySQL Server config settings.
I have also e-mailed you my Delphi units.
Thanks
MySQL server version: 5.0.21-community-nt
MySQL client version: Direct
auto_increment_increment 1
auto_increment_offset 1
automatic_sp_privileges ON
back_log 50
basedir C:\Program Files\MySQL\MySQL Server 5.0\
binlog_cache_size 32768
bulk_insert_buffer_size 8388608
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\
collation_connection latin1_swedish_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci
completion_type 0
concurrent_insert 1
connect_timeout 5
datadir D:\Work\TMSSQL\
date_format %Y-%m-%d
datetime_format %Y-%m-%d %H:%i:%s
default_week_format 0
delay_key_write ON
delayed_insert_limit 100
delayed_insert_timeout 300
delayed_queue_size 1000
div_precision_increment 4
engine_condition_pushdown OFF
expire_logs_days 0
flush OFF
flush_time 1800
ft_boolean_syntax + -><()~*:""&|
ft_max_word_len 84
ft_min_word_len 4
ft_query_expansion_limit 20
ft_stopword_file (built-in)
group_concat_max_len 1024
have_archive YES
have_bdb NO
have_blackhole_engine NO
have_compress YES
have_crypt NO
have_csv NO
have_example_engine NO
have_federated_engine NO
have_geometry YES
have_innodb YES
have_isam NO
have_ndbcluster NO
have_openssl DISABLED
have_query_cache YES
have_raid NO
have_rtree_keys YES
have_symlink YES
init_connect
init_file
init_slave
innodb_additional_mem_pool_size 7340032
innodb_autoextend_increment 8
innodb_buffer_pool_awe_mem_mb 0
innodb_buffer_pool_size 319815680
innodb_checksums ON
innodb_commit_concurrency 0
innodb_concurrency_tickets 500
innodb_data_file_path ibdata1:10M:autoextend
innodb_data_home_dir d:\work\tmssql\
innodb_doublewrite ON
innodb_fast_shutdown 1
innodb_file_io_threads 4
innodb_file_per_table OFF
innodb_flush_log_at_trx_commit 1
innodb_flush_method
innodb_force_recovery 0
innodb_lock_wait_timeout 5
innodb_locks_unsafe_for_binlog OFF
innodb_log_arch_dir
innodb_log_archive OFF
innodb_log_buffer_size 4194304
innodb_log_file_size 63963136
innodb_log_files_in_group 2
innodb_log_group_home_dir .\
innodb_max_dirty_pages_pct 90
innodb_max_purge_lag 0
innodb_mirrored_log_groups 1
innodb_open_files 300
innodb_support_xa ON
innodb_sync_spin_loops 20
innodb_table_locks ON
innodb_thread_concurrency 10
innodb_thread_sleep_delay 10000
interactive_timeout 28800
join_buffer_size 131072
key_buffer_size 164626432
key_cache_age_threshold 300
key_cache_block_size 1024
key_cache_division_limit 100
language C:\Program Files\MySQL\MySQL Server 5.0\share\english\
large_files_support ON
large_page_size 0
large_pages OFF
license GPL
local_infile ON
log OFF
log_bin OFF
log_bin_trust_function_creators OFF
log_error .\SERVER.err
log_slave_updates OFF
log_slow_queries OFF
log_warnings 1
long_query_time 10
low_priority_updates OFF
lower_case_file_system OFF
lower_case_table_names 1
max_allowed_packet 1048576
max_binlog_cache_size 4294967295
max_binlog_size 1073741824
max_connect_errors 10
max_connections 100
max_delayed_threads 20
max_error_count 64
max_heap_table_size 16777216
max_insert_delayed_threads 20
max_join_size 4294967295
max_length_for_sort_data 1024
max_prepared_stmt_count 16382
max_relay_log_size 0
max_seeks_for_key 4294967295
max_sort_length 1024
max_sp_recursion_depth 0
max_tmp_tables 32
max_user_connections 0
max_write_lock_count 4294967295
multi_range_count 256
myisam_data_pointer_size 6
myisam_max_sort_file_size 107374182400
myisam_recover_options OFF
myisam_repair_threads 1
myisam_sort_buffer_size 214958080
myisam_stats_method nulls_unequal
named_pipe OFF
net_buffer_length 16384
net_read_timeout 30
net_retry_count 10
net_write_timeout 60
new OFF
old_passwords OFF
open_files_limit 622
optimizer_prune_level 1
optimizer_search_depth 62
pid_file D:\Work\TMSSQL\SERVER.pid
prepared_stmt_count 8
port 3306
preload_buffer_size 32768
protocol_version 10
query_alloc_block_size 8192
query_cache_limit 1048576
query_cache_min_res_unit 4096
query_cache_size 104857600
query_cache_type ON
query_cache_wlock_invalidate OFF
query_prealloc_size 8192
range_alloc_block_size 2048
read_buffer_size 61440
read_only OFF
read_rnd_buffer_size 258048
relay_log_purge ON
relay_log_space_limit 0
rpl_recovery_rank 0
secure_auth OFF
shared_memory OFF
shared_memory_base_name MYSQL
server_id 0
skip_external_locking ON
skip_networking OFF
skip_show_database OFF
slave_compressed_protocol OFF
slave_load_tmpdir C:\WINDOWS\TEMP\
slave_net_timeout 3600
slave_skip_errors OFF
slave_transaction_retries 10
slow_launch_time 2
sort_buffer_size 262136
sql_mode
sql_notes ON
sql_warnings ON
storage_engine MyISAM
sync_binlog 0
sync_frm ON
system_time_zone GMT Daylight Time
table_cache 256
table_lock_wait_timeout 50
table_type MyISAM
thread_cache_size 8
thread_stack 196608
time_format %H:%i:%s
time_zone SYSTEM
timed_mutexes OFF
tmp_table_size 108003328
tmpdir
transaction_alloc_block_size 8192
transaction_prealloc_size 4096
tx_isolation REPEATABLE-READ
updatable_views_with_limit YES
version 5.0.21-community-nt
version_comment MySQL Community Edition (GPL)
version_compile_machine ia32
version_compile_os Win32
wait_timeout 28800
Posted: Tue 08 Apr 2008 12:56
by Dimon
Thank you for information. We have reproduced this problem and fixed it. This fix will be included in the next MyDAC build.
Posted: Tue 15 Apr 2008 08:24
by ACS2000
When will the next update be released. I don't mean to nag, but I could really do with the fix for this locking problem. Thanks
Posted: Tue 15 Apr 2008 09:39
by Dimon
We are planning to release the new MyDAC build in two or three weeks.
We will post an announcement at this forum after the new build is available.
Posted: Thu 17 Apr 2008 08:17
by ACS2000
Hi
Any chance you could e-mail me the fix, please?
Sorry to be a nuisance, but it is really holding me up.
If so, please e-mail to alan*technikraft.co.uk
Thanks
Posted: Tue 22 Apr 2008 08:17
by ACS2000
Have received and tried the update and I'm pleased to say that it now works.
Thanks