首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii2迁移灵活的数据库引擎

问Yii2迁移灵活的数据库引擎
EN

Stack Overflow用户
提问于 2020-09-23 21:30:08
回答 1查看 84关注 0票数 0

我有一个用PHP语言编写的带有框架Yii2的应用程序。我希望这个应用程序是运行在一些数据库引擎,如Postgresql,MySql或SQL Server。问题是如何迁移它。例如,Postgresql和SQL Server使用模式作为数据库的子集,而不是MySQL。

我用PostgreSQL语言开发我的应用程序时,使用了一些模式,比如history、main和log。现在,我想尝试使用MySQL运行我的应用程序。要做到这一点,我必须做些什么?

代码语言:javascript
复制
POSTGRESQL
    my_database -> database name
        main -> schema
            tables
        history -> schema
            tables

我希望我的迁移可以运行任何你使用的数据库引擎(postgresql,mssql或mysql),没有控制器/模型/等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 04:09:36

根据在每种方法中使用的数据库系统的类型,您可以扩展yii\db\Migration并添加条件。

例如,对于应用于所有方法的默认值,我扩展了yii\db\Migration并覆盖了init()

代码语言:javascript
复制
    public function init()
    {
        parent::init();

        switch ($this->db->driverName) {
            case 'mysql':
                $this->tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
                $this->dbType = 'mysql';
                break;
            case 'pgsql':
                // specifics for pgsql
            default:
                throw new \RuntimeException('Your database is not supported!');
        }
    }

那么您的所有迁移都应该扩展此迁移。

根据这一点,使用相同的迁移,您可以对特定的数据库系统进行特定的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64029124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档