【问题标题】:Kohana 3.3 Database Config SystemKohana 3.3 数据库配置系统
【发布时间】:2014-05-08 21:09:42
【问题描述】:

我试图设置数据库配置系统。 我附加了新的数据库配置、加载组并尝试获取字段值:

Kohana::$config->attach(new Config_Database);
$config = Kohana::$config->load('site');
$value = $config->get('title');
echo Debug::vars($value);

但我只得到一个错误:

ErrorException [注意]: unserialize(): 偏移量 0 处的错误,共 16 字节 MODPATH\database\classes\Kohana\Config\Database\Reader.php [ 64 ]

配置表结构:

CREATE TABLE IF NOT EXISTS `config` (
  `group_name` varchar(128) NOT NULL DEFAULT '',
  `config_key` varchar(128) NOT NULL DEFAULT '',
  `config_value` text,
  PRIMARY KEY (`group_name`,`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `config` (`group_name`, `config_key`, `config_value`) VALUES
('site', 'description', 'Description'),
('site', 'title', 'Test title');

请告诉我,怎么了?

【问题讨论】:

    标签: kohana kohana-3.3


    【解决方案1】:

    这是因为Config_Database 期望配置值为serialized。错误消息是说 Reader 无法 unserialize 您请求的数据(因为您使用非序列化值播种了数据库)。您应该使用以下方式设置配置值:

    $config->set('key', 'value')
    

    例如:

    Kohana::$config->attach(new Config_Database);
    $config = Kohana::$config->load('site');       
    $config->set('title', 'This is a title');
    

    现在,如果我们查看数据库中的数据,您应该会看到如下内容(注意config_value 字段的格式):

    mysql> select * from config;
    +------------+------------+-------------------------+
    | group_name | config_key | config_value            |
    +------------+------------+-------------------------+
    | site       | title      | s:15:"This is a title"; |
    +------------+------------+-------------------------+
    1 row in set (0.00 sec)
    

    【讨论】:

    • 明白。感谢您的详细回答!
    猜你喜欢
    • 1970-01-01
    • 2015-08-08
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多