0

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

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');

请告诉我,有什么问题吗?

4

1 回答 1

1

这是因为Config_Database期望配置值被序列化。错误消息是说 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)
于 2014-05-10T00:10:12.313 回答