将 Laravel 迁移与 AWS Redshift 数据库一起使用

Posted

技术标签:

【中文标题】将 Laravel 迁移与 AWS Redshift 数据库一起使用【英文标题】:Using Laravel migrations with AWS Redshift database 【发布时间】:2017-04-19 17:55:25 【问题描述】:

我正在使用 Laravel 5.3。我可以成功连接到我的 Redshift 数据库。

但是我发现 Laravel 迁移功能不适用于 Redshift,因为 Laravel 在具有“串行”类型列的架构中创建了一个“迁移”表。 Redshift 不支持“串行”类型。

[照亮\数据库\查询异常] SQLSTATE [0A000]:不支持功能:7 错误:列 “migrations.id”具有不受支持的类型“serial”。 (SQL:创建表 “迁移”(“id”序列主键不为空,“迁移” varchar(255) not null, "batch" integer not null))

                                                                                                          [PDOException]                                                        

SQLSTATE[0A000]:不支持功能:7 错误:列 “migrations.id”具有不受支持的类型“serial”。

有什么办法让我可以在 Redshift 中使用迁移吗?

【问题讨论】:

【参考方案1】:

对于 Laravel 8.*

migrations 表可以存储在不同的数据库(例如 mysql)中,必须将其配置为config/database.php(或DB_CONNECTION 环境变量)中的默认连接。

创建migrations 表:

php artisan migrate:install --database=mysql

...mysql 是连接的名称。

然后在 Redshift 迁移中,您需要明确指定连接:

class CreateRedshiftTable extends Migration

    protected $connection = 'redshift';

然后运行php artisan migrate,每次迁移都会使用指定的连接。这种方法有局限性,因为 Laravel pgsql 驱动程序不支持 Redshift 特定功能。

【讨论】:

以上是关于将 Laravel 迁移与 AWS Redshift 数据库一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 使用 Lambda 迁移到 AWS RDS

无法将数据库迁移到 AWS 弹性 Beanstalk

远程 Mysql 服务器上的 Laravel 权限被拒绝(AWS aurora)

将托管的 LAMP 站点迁移到 AWS

如何让 Laravel 与 AWS 上的 Redis 集群一起工作

Laravel入坑指南——数据迁移与填充