我有一个数据库,其中所有表都以" bs"为前缀。 。我从bs_states表中烘焙了一个模型,它生成了以下代码。
<?php
App::uses('AppModel', 'Model');
/**
* State Model
*
* @property country $Country
* @property Seller $Seller
*/
class State extends AppModel {
/**
* Use table
*
* @var mixed False or table name
*/
public $useTable = '_states';
/**
* Primary key field
*
* @var string
*/
public $primaryKey = 'state_id';
/**
* Display field
*
* @var string
*/
public $displayField = 'state_iso';
//The Associations below have been created with all possible keys, those that are not needed can be removed
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'Country' => array(
'className' => 'country',
'foreignKey' => 'country_iso',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
/**
* hasMany associations
*
* @var array
*/
public $hasMany = array(
'Seller' => array(
'className' => 'Seller',
'foreignKey' => 'state_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
}
此代码在本地系统中运行良好,但当我将其上传到生产服务器时,它会显示以下消息。
缺少数据库表 错误:在数据源默认值中找不到模型状态的表bsstates。
最初我认为这是一个缓存问题,所以我做了以下事情:
Configure::write('debug', 0);
更改为Configure::write('debug', 2);
但没有运气。我仍然面临同样的问题。生产服务器上的数据库连接很好,因为其他模型工作正常。
答案 0 :(得分:0)
删除$ useTable属性并使用
public $tablePrefix = 'bs_';
答案 1 :(得分:0)
当您处于生产环境中时,首先要查看日志。它们还提供了比调试打印更多的信息。导航到这里:
\app\tmp\logs
此错误通常伴随着桌面上的权限不足。确保Cake的db角色具有该表的权限。
既然你说它在本地工作正常就让我觉得它是一个数据库权限问题,而且CakePHP约定似乎也没有了。
Model类名称应为:
BsStates
,类变量$useTable
应为:
public $useTable = 'bs_states';
答案 2 :(得分:0)
而不是写public $useTable = '_states';
你可以写public $useTable = 'states';
添加下划线()
database.php中数据库配置中的前缀为&#39; bs _&#39;。
或在此文件中添加public $tablePrefix = 'bs_';
。