Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PostgreSQL在Silex中无法登录_Php_Postgresql_Silex - Fatal编程技术网

Php 使用PostgreSQL在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

我正在用Silex框架开发一个小客户区的项目。我想使用
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)
);