Логин не работает в Silex с PostgreSQL

1

Я разрабатываю проект с небольшой клиентской областью с каркасом Silex. Я хочу, чтобы сохранить сессию в базе данных с помощью SessionServiceProvider и PdoSessionHandler, но когда я пытаюсь войти в систему с помощью теста учетной записи сеанса записывается в базу данных, но Логин не будет сделано правильно, и я получаю страницу входа в петлю. Также я получаю следующую ошибку в журнале ошибок

Uncaught exception 'PDOException' with message 'SQLSTATE[22021]: Character not in repertoire: 7 ERROR:  invalid byte sequence for encoding "UTF8"

Таблица сеансов выглядит так (получена с страницы документации Silex):

CREATE TABLE sessions (
    sess_id VARCHAR(255) NOT NULL,
    sess_value TEXT NOT NULL,
    sess_time INTEGER NOT NULL,
    PRIMARY KEY(sess_id)
);

Кто-нибудь может помочь?

  • 0
    Вы создали таблицу в Postgres, используя хранилище UTF8 (для таблицы / столбца или всей базы данных)?
  • 0
    База данных определяется так: backoffice | qiuandei | UTF8 | en_US.utf8 | en_US.utf8 |
Теги:
silex

1 ответ

2
Лучший ответ

Я обнаружил, что с той же ошибкой некоторое время назад, похоже, что документация silex неверна для PostgreSQL, поле sess_value должно быть BYTEA типа BYTEA потому что данные сеанса могут содержать символы, которые не принимаются в UTF-8, как символ NULL 0x00,

Кроме того, поскольку Silex использует компоненты Symfony2 для хранения сеанса в базе данных, необходимо добавить другое поле sess_lifetime, которое будет содержать время жизни сеанса базы данных.

Поэтому определение должно быть:

CREATE TABLE sessions (
    sess_id VARCHAR(255) NOT NULL,
    sess_value BYTEA NOT NULL,
    sess_time INTEGER NOT NULL,
    sess_lifetime INTEGER NOT NULL,
    PRIMARY KEY(sess_id)
);
  • 1
    Большой!! Я изменил определение таблицы и не работает !! Большое спасибо!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню