Свои поля в Session

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
FunStrike
Сообщения: 28
Зарегистрирован: 2018.07.23, 13:39

Свои поля в Session

Сообщение FunStrike »

Здравствуйте, добавил к встроенным полям в таблице Session свои. user_id и last_write. Теперь возникла проблема, если пользователь не авторизован то в user_id=NULL, и по этому поводу yii ругается. Но в ручную NULL ставится без проблем. Поля стоит как Can Be NULL, default NULL

Код: Выделить всё

'session' => [
  'class' => 'yii\web\DbSession',
  'writeCallback' => function ($session) {
    return [
      'user_id' => Yii::$app->user->id,
      'last_write' => time(),
    ];
  },
]
Ошибка:

Код: Выделить всё

Exception (Integrity constraint violation) 'yii\db\IntegrityException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null 
The SQL being executed was: UPDATE `session` SET `data`='__flash|a:0:{}__returnUrl|s:6:\"/admin\";', `user_id`=NULL, `last_write`=1552966184, `expire`=1552967624 WHERE `id`='p2ehf5mc79u2orgm54ag2shgh3'' 
in 
/var/www/vhosts/istc.int/httpdocs/proposals-test/vendor/yiisoft/yii2/db/Schema.php:636 Stack trace: #0
/var/www/vhosts/istc.int/httpdocs/proposals-test/vendor/yiisoft/yii2/db/Command.php(852): yii\db\Schema->convertException(Object(PDOException), 'UPDATE `session...') #1 
/var/www/vhosts/istc.int/httpdocs/proposals-test/vendor/yiisoft/yii2/web/DbSession.php(183): yii\db\Command->execute() #2 [internal function]: yii\web\DbSession->writeSession('p2ehf5mc79u2org...', '__flash|a:0:{}_...') #3 
/var/www/vhosts/istc.int/httpdocs/proposals-test/vendor/yiisoft/yii2/web/Session.php(187): session_write_close() #4 [internal function]: yii\web\Session->close() #5 {main}
Alex_N
Сообщения: 68
Зарегистрирован: 2015.03.02, 21:20

Re: Свои поля в Session

Сообщение Alex_N »

Привет! Попробуй напрямую в бд выполнить sql запрос, аналогичный этому:

Код: Выделить всё

UPDATE `session` SET `data`='__flash|a:0:{}__returnUrl|s:6:\"/admin\";', `user_id`=NULL, `last_write`=1552966184, `expire`=1552967624 WHERE `id`='p2ehf5mc79u2orgm54ag2shgh3'' 
Ругается на поле user_id ?
FunStrike
Сообщения: 28
Зарегистрирован: 2018.07.23, 13:39

Re: Свои поля в Session

Сообщение FunStrike »

Alex_N писал(а): 2019.03.21, 09:02 Привет! Попробуй напрямую в бд выполнить sql запрос, аналогичный этому:

Код: Выделить всё

UPDATE `session` SET `data`='__flash|a:0:{}__returnUrl|s:6:\"/admin\";', `user_id`=NULL, `last_write`=1552966184, `expire`=1552967624 WHERE `id`='p2ehf5mc79u2orgm54ag2shgh3'' 
Ругается на поле user_id ?
Да ругается, в чем может быть причина?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Свои поля в Session

Сообщение ElisDN »

В NOT NULL.
FunStrike
Сообщения: 28
Зарегистрирован: 2018.07.23, 13:39

Re: Свои поля в Session

Сообщение FunStrike »

ElisDN писал(а): 2019.03.26, 10:21В NOT NULL.
Поле может быть NULL
Изображение
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Свои поля в Session

Сообщение Loveorigami »

Внешних ключей никаких не цепляли на user_id?
FunStrike
Сообщения: 28
Зарегистрирован: 2018.07.23, 13:39

Re: Свои поля в Session

Сообщение FunStrike »

Loveorigami писал(а): 2019.03.29, 09:29 Внешних ключей никаких не цепляли на user_id?
Нет ничего не цеплял
FunStrike
Сообщения: 28
Зарегистрирован: 2018.07.23, 13:39

Re: Свои поля в Session

Сообщение FunStrike »

Так, не знаю в чем причина. Пересоздал просто таблицу, плюс поменял тип поля data с blob -> longblob, теперь без ошибок.
Аватара пользователя
leonenco
Сообщения: 155
Зарегистрирован: 2017.01.30, 22:42

Re: Свои поля в Session

Сообщение leonenco »

в логе был ответ, ElisDN прав: 1048 Column 'user_id' cannot be null
FunStrike
Сообщения: 28
Зарегистрирован: 2018.07.23, 13:39

Re: Свои поля в Session

Сообщение FunStrike »

leonenco писал(а): 2019.04.06, 06:37 в логе был ответ, ElisDN прав: 1048 Column 'user_id' cannot be null
Да, но user_id может быть NULL и по дефолту NULL. Скрины сверху лежат=)
Аватара пользователя
leonenco
Сообщения: 155
Зарегистрирован: 2017.01.30, 22:42

Re: Свои поля в Session

Сообщение leonenco »

FunStrike писал(а): 2019.04.09, 14:33
leonenco писал(а): 2019.04.06, 06:37 в логе был ответ, ElisDN прав: 1048 Column 'user_id' cannot be null
Да, но user_id может быть NULL и по дефолту NULL. Скрины сверху лежат=)
Подозреваю, что возможно есть Foreign Key на что указывает

Код: Выделить всё

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null
FunStrike
Сообщения: 28
Зарегистрирован: 2018.07.23, 13:39

Re: Свои поля в Session

Сообщение FunStrike »

Приношу свои извинения за беспокойства, оказывается висел триггер на другую таблицу где нельзя NULL записывать.
Ответить