我有一个用PHP语言编写的带有框架Yii2的应用程序。我希望这个应用程序是运行在一些数据库引擎,如Postgresql,MySql或SQL Server。问题是如何迁移它。例如,Postgresql和SQL Server使用模式作为数据库的子集,而不是MySQL。
我用PostgreSQL语言开发我的应用程序时,使用了一些模式,比如history、main和log。现在,我想尝试使用MySQL运行我的应用程序。要做到这一点,我必须做些什么?
POSTGRESQL
my_database -> database name
main -> schema
tables
history -> schema
tables我希望我的迁移可以运行任何你使用的数据库引擎(postgresql,mssql或mysql),没有控制器/模型/等。
发布于 2020-09-24 04:09:36
根据在每种方法中使用的数据库系统的类型,您可以扩展yii\db\Migration并添加条件。
例如,对于应用于所有方法的默认值,我扩展了yii\db\Migration并覆盖了init()
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!');
}
}那么您的所有迁移都应该扩展此迁移。
根据这一点,使用相同的迁移,您可以对特定的数据库系统进行特定的操作。
https://stackoverflow.com/questions/64029124
复制相似问题