Php 使用PostgreSQL在Silex中无法登录
我正在用Silex框架开发一个小客户区的项目。我想使用Php 使用PostgreSQL在Silex中无法登录,php,postgresql,silex,Php,Postgresql,Silex,我正在用Silex框架开发一个小客户区的项目。我想使用SessionServiceProvider和PdoSessionHandler将会话存储在数据库中,但当我尝试使用测试帐户登录时,会话会写入数据库中,但登录操作不正确,我会在循环中获得登录页面。另外,我在错误日志中得到以下错误 Uncaught exception 'PDOException' with message 'SQLSTATE[22021]: Character not in repertoire: 7 ERROR: inva
SessionServiceProvider
和PdoSessionHandler
将会话存储在数据库中,但当我尝试使用测试帐户登录时,会话会写入数据库中,但登录操作不正确,我会在循环中获得登录页面。另外,我在错误日志中得到以下错误
Uncaught exception 'PDOException' with message 'SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding "UTF8"
sessions表如下所示(从中获取):
有人可以帮忙吗?我不久前发现自己也有同样的错误,看起来silex文档对于PostgreSQL是不正确的,
sess\u value
字段应该是BYTEA
类型字段,因为会话数据可能包含UTF-8中不接受的字符,比如空字符0x00
另外,由于Silex使用Symfony2组件将会话存储在数据库中,因此应添加另一个字段,即sess_LIFET,该字段将包含数据库会话的生存期
因此,定义应该是:
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)
);
您是否使用UTF8存储(在表/列或整个数据库上)在Postgres中创建了表?数据库的定义如下:
backoffice | qiuandei | UTF8 | en|u US.UTF8 |
Great!!我更改了表定义,但它不工作!!谢谢!!
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)
);