Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果FuelPHP中不存在,则创建数据库_Php_Database_Fuelphp - Fatal编程技术网

如果FuelPHP中不存在,则创建数据库

如果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

首先,我没有任何数据库,我在迁移中编写代码来创建数据库、表和数据,我想检查数据库是否不存在,然后在db connect中自动创建新数据库,并在出现错误时尝试捕获此连接

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的用户通常具有受限的安全权限,因此可能根本不可能。