我试图设置数据库配置系统。 我附加新的数据库配置,加载组并尝试获取字段值:
Kohana::$config->attach(new Config_Database);
$config = Kohana::$config->load('site');
$value = $config->get('title');
echo Debug::vars($value);
但我只得到一个错误:
ErrorException [注意]:unserialize():偏移0为16时出错 bytes 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');
请告诉我,有什么不对?
答案 0 :(得分: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)