将 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 数据库一起使用的主要内容,如果未能解决你的问题,请参考以下文章
远程 Mysql 服务器上的 Laravel 权限被拒绝(AWS aurora)