如果FuelPHP中不存在,则创建数据库
首先,我没有任何数据库,我在迁移中编写代码来创建数据库、表和数据,我想检查数据库是否不存在,然后在db connect中自动创建新数据库,并在出现错误时尝试捕获此连接如果FuelPHP中不存在,则创建数据库,php,database,fuelphp,Php,Database,Fuelphp,首先,我没有任何数据库,我在迁移中编写代码来创建数据库、表和数据,我想检查数据库是否不存在,然后在db connect中自动创建新数据库,并在出现错误时尝试捕获此连接 public function up() { try { \DBUtil::create_database('database_name', 'utf8_general_ci', true); // the true flag adds a IF NOT EXISTS } catch
public function up()
{
try {
\DBUtil::create_database('database_name', 'utf8_general_ci', true);
// the true flag adds a IF NOT EXISTS
} catch(\Database_Exception $e) {
echo $e->getMessage();
}
}
尝试代码,但在命令行中运行“php oil refine migrate”时出现错误“未知数据库名称”
我可以尝试捕获此错误的自定义异常吗
1049!
Fuel\Core\Database_Exception [ 1049 ]:
SQLSTATE[HY000] [1049] Unknown database 'database_name'
创建数据库通常不是通过迁移来完成的,因为它会使您始终使用相同的数据库名称,如果您在同一台服务器上部署多个站点或有类似的场景,这将成为一个大问题
一般认为数据库本身是作为设置的一部分创建的,可以是手动的,也可以是自动的,因此PHP可以连接到数据库。我的第一个想法是,异常完全限定名称可能不正确。尝试
catch(Fuel\Core\Database\u Exception$e){
您当前所做的是告诉PHP查看根命名空间,其中存在DateTime()
之类的内容。此外,您还可以附加多个捕获,始终可以以catch(\Exception$e)结束{
将捕获扩展PHP默认异常类的任何和所有异常。还值得注意的是,应用程序用于连接DB的用户通常具有受限的安全权限,因此可能根本不可能。