Вставка сессии без идентификатора - PullRequest
0 голосов
/ 01 февраля 2012

Я просто поддерживаю новый проект CakePHP 1.3.14, и что-то, чего я никогда раньше не видел, происходит с моим хранилищем сеансов базы данных.Кажется, что запись сеанса пытается сохранить без идентификатора:

SQL Error: 1062: Duplicate entry '' for key 'PRIMARY'
Query: INSERT INTO `cake_sessions` (`data`, `expires`) VALUES ('<remove for space>', 1328115862)

По какой-то причине он даже не пытается заполнить поле id.Все, что я делаю, загружает домашнюю страницу.Первая загрузка, конечно, в порядке, если таблица пуста, но последующие перезагрузки представляют это сообщение, поскольку исходная запись сеанса хранится без идентификатора.

Кто-нибудь видел это раньше?

Спасибо.

ОБНОВЛЕНИЕ

# Relevant settings
Configure::write('Session.save', 'database');
Configure::write('Session.model', 'Session');
Configure::write('Session.cookie', 'CAKEPHP');
Configure::write('Session.timeout', '120');
Configure::write('Session.start', true);
Configure::write('Session.checkAgent', true);

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

Оказывается, что в кодовой базе был AppModel, в котором был создан белый список по умолчанию, исключающий свойство id. Поскольку модель Session расширяет AppModel, свойство игнорируется. Прикольные вещи.

0 голосов
/ 01 февраля 2012

У вас установлено auto_increment в поле первичного ключа?Или вы используете UUID?Если вы используете UUID, убедитесь, что тип поля CHAR (36) для первичного ключа.В противном случае просто добавьте автоинкремент к этому полю, и MySQL будет обрабатывать добавление значения поля для PK.

...