codeigniter 中的数据库错误 1054
Posted
技术标签:
【中文标题】codeigniter 中的数据库错误 1054【英文标题】:database error 1054 in codeigniter 【发布时间】:2015-06-28 03:14:22 【问题描述】:我正在尝试做一个 OTH 应用程序,但我收到了这个错误
发生数据库错误
错误号:1054
“字段列表”中的未知列“数据”
选择
data
FROMci_sessions
WHEREid
= 'dd8fddaabb45c365fbf27a6fdc5ea60d59f569e4' 和ip_address
= '::1'文件名:libraries/Session/drivers/Session_database_driver.php
行号:160
这是 Session_database_driver.php
public function read($session_id)
if ($this->_get_lock($session_id) !== FALSE)
// Needed by write() to detect session_regenerate_id() calls
$this->_session_id = $session_id;
$this->_db
->select('data')
->from($this->_config['save_path'])
->where('id', $session_id);
if ($this->_config['match_ip'])
$this->_db->where('ip_address', $_SERVER['REMOTE_ADDR']);
if (($result = $this->_db->get()->row()) === NULL)
$this->_fingerprint = md5('');
return '';
// PostgreSQL's variant of a BLOB datatype is Bytea, which is a
// PITA to work with, so we use base64-encoded data in a TEXT
// field instead.
$result = ($this->_platform === 'postgre')
? base64_decode(rtrim($result->data))
: $result->data;
$this->_fingerprint = md5($result);
$this->_row_exists = TRUE;
return $result;
$this->_fingerprint = md5('');
return '';
【问题讨论】:
可能有帮助:***.com/questions/26960544/… ? @OfirBaruch 我试过了,但它不起作用。实际上那里有一些表名丢失的问题。 如果您将select('data')
更改为select('user_data')
会发生什么?
@OfirBaruch 'where 子句'中的未知列'id' SELECT user_data
FROM ci_sessions
WHERE id
= '0c37a2a2094055181b386efea510a21068d71e4d' AND @98765span>@98765span>2':1':1'
我想我理解这个问题
【参考方案1】:
根据CI手册关于Sessions
的基本格式
ci_sessions
表是:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(45) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);
在您的 php 代码中,您使用不同的字段:
$this->_db
->select('data')
->from($this->_config['save_path'])
->where('id', $session_id);
因此,通过将代码更改为:
$this->_db
->select('user_data')
->from($this->_config['save_path'])
->where('session_id', $session_id);
您的代码应该可以工作。
【讨论】:
非常感谢!你拯救了我的一天!【参考方案2】:我认为正确的解决方案是检查您的数据库是否正确创建。
根据Documentation for CI 3.0.0,正确的数据库应该是:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);
我不同意更改 CI 驱动程序文件
【讨论】:
【参考方案3】:我遇到了同样的问题,我已经改变了......
$this->_db
->select('data')
->from($this->_config['save_path'])
->where('id', $session_id);
到->>>>>
$this->_db
->select('user_data')
->from($this->_config['save_path'])
->where('session_id', $session_id);
如果我在我的 config.ph 中这样做,问题就会存在
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
【讨论】:
哦错过了..->where('id', $session_id);更改了一些字段,例如“user_data”和“session_id”,并且......它有效......以上是关于codeigniter 中的数据库错误 1054的主要内容,如果未能解决你的问题,请参考以下文章
core/Loader.php 中的数据库错误 -- postgresql + codeigniter
数据库和requeste中的错误不允许使用codeigniter
在使用 codeigniter 时尝试显示数据库中的图像时收到错误消息