如何将 Rails 应用程序数据库从 PostgreSQL 切换到 SQLite

在开展 `Rails` 项目时,可能会出现需要将数据库从 `PostgreSQL` 切换到 `SQLite` 的情况。

“SQLite” 是轻量级的,不需要设置服务器,是开发或小型项目的绝佳选择。本指南将逐步指导您完成整个过程。

介绍

在 Rails 项目中更改数据库似乎很困难,但“Rails”的灵活性使它成为一项简单的任务。通过遵循以下步骤,您将无缝地从“PostgreSQL”过渡到“SQLite”。

更新 Gemfile

首先,在 Gemfile 中将 PostgreSQL gem(`pg`)替换为 SQLite gem(`sqlite3`)。操作如下:

# Remove or comment out:
# gem 'pg'

# Add:
gem 'sqlite3', '~> 1.4'

更新后,运行以下命令来安装新的依赖项:

bundle install

输出

Image Update the Gemfile

更新数据库配置

接下来,更新您的 `config/database.yml` 文件以将 `SQLite` 配置为您的数据库适配器。以下是示例配置:

default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

此配置将“SQLite”定义为所有环境(开发、测试和生产)的适配器。

更新依赖项

确保您的应用程序代码不使用 PostgreSQL 特有的功能(如 uuid、JSONB 字段或特定 SQL 查询)。必要时进行重构。

与“PostgreSQL”相比,SQLite 具有不同的功能。您需要确保您的应用程序不依赖于 PostgreSQL 特定的功能,例如:

  • UUID:用标准 ID 或兼容的替代方案替换 UUID 列。
  • JSONB 字段:使用常规文本列或将数据序列化为字符串格式。
  • 自定义 PostgreSQL 查询:重写查询以与 SQLite 兼容。
  • 仔细检查您的应用程序代码和迁移中是否存在任何 PostgreSQL 特定的功能,并根据需要进行重构。

    运行依赖项

    更新“Gemfile”后,通过运行以下命令确保安装了所有必需的 gem:

    bundle install

    输出

    Image Run dependencies

    重新创建结构

    rails db:create
    rails db:migrate

    输出

    Image Re-create the structure

    测试你的应用程序

    一切设置完成后,启动你的 Rails 服务器:

    rails server

    彻底测试您的应用程序,以确保一切按预期运行。请注意“SQLite”与“PostgreSQL”中可能存在差异的任何功能或查询。

    结论

    将您的 Rails 项目从“PostgreSQL”切换到 SQLite 可以简化您的开发或小规模应用程序的设置。

    “SQLite” 的轻量级和无服务器设计使其成为快速迭代和测试的理想选择。虽然 PostgreSQL 在生产环境中表现出色,但当简单性和可移植性成为关键时,SQLite 就会大放异彩。

    完毕

    让我们建立联系

    Github

    LinkedIn

    开发