mars37
Новичок
присутствие "отсутствующей" записи в БД
Ситуация такая...
Сессионные данные обрабатываюся MySql (обработчики сессий установлены session_set_save_handler(...)).
Таблица, где храняться сессионные данные имеет такую структуру:
Всё нормально работало больше года, но в последнее время иногда стали появляться такие ошибки SQL:
SQL-query: INSERT INTO sessions (sess_key, sess_data, update_time) VALUES ('2fd1855102c5fb23b21428491b5b4cf8',
'cookie name|N;', '1208569324')
Server response: Duplicate entry '2fd1855102c5fb23b21428491b5b4cf8' for key 2
Механизм записи данных в сессию:
в функцию записи данных передаются параметры $sess_key (ключ сессии) и $sess_data
1. $id = sql_value("Select id from session where sess_key=$sess_key");
2. если $id - натуральное число, то делаю update sessions set sess_data=...
3. иначе делаю insert, который и вызывает вышеприведённую ошибку.
Т.е., в чём проблема? Выбираю id у записи по определённому условию; если такой нет, то делаю вставку, и тут mysql ругается на то, что такая запись есть...
Между запросом записи и вставкой, в данном случае, может-ли вклиниться вставка от другого скрипта?
Кто-нибудь сталкивался с такой или похожей проблемой?
Ситуация такая...
Сессионные данные обрабатываюся MySql (обработчики сессий установлены session_set_save_handler(...)).
Таблица, где храняться сессионные данные имеет такую структуру:
PHP:
CREATE TABLE sessions (
id int unsigned NOT NULL auto_increment,
sess_key varchar(50) NOT NULL default '',
sess_data text NOT NULL,
update_time int unsigned NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE KEY sess_key (sess_key)
);
SQL-query: INSERT INTO sessions (sess_key, sess_data, update_time) VALUES ('2fd1855102c5fb23b21428491b5b4cf8',
'cookie name|N;', '1208569324')
Server response: Duplicate entry '2fd1855102c5fb23b21428491b5b4cf8' for key 2
Механизм записи данных в сессию:
в функцию записи данных передаются параметры $sess_key (ключ сессии) и $sess_data
1. $id = sql_value("Select id from session where sess_key=$sess_key");
2. если $id - натуральное число, то делаю update sessions set sess_data=...
3. иначе делаю insert, который и вызывает вышеприведённую ошибку.
Т.е., в чём проблема? Выбираю id у записи по определённому условию; если такой нет, то делаю вставку, и тут mysql ругается на то, что такая запись есть...
Между запросом записи и вставкой, в данном случае, может-ли вклиниться вставка от другого скрипта?
Кто-нибудь сталкивался с такой или похожей проблемой?