上个专案跟这个专案刚好 db 都是用 mysql,分享一下汇入资料的方法,还有一些 migration 问题的一些笔记,另外个人满推以下两种 database 的 GUI:
两者都满好用的也其实都差不多,因为同事都用 Sequal Pro 还有个人刚好也偏好,所以後来主要都是用 Sequal Pro。
连结的方式也很容易,点选左下角的 +
号来新增 new favorite
database 名称,还有设定一些 config 来连结即可,最常用的大概就是把 staging/production 的 database 弄到 local 来重现问题。
点选 export 後选取需要的 table 并输出 SQL file,详细的其他需求就看当下需要的使用情况。
mysql -u root `database_name` < ~/Desktop/export_database_name_with_date_time.sql
database_name
看要汇入的资料库是哪一个?对应各个 database 後的 ENV 名称,Rails 6 也支援 multiple database,详细可以参考 active_record_multiple_databases
# config > database.yml
default: &default
writer:
adapter: mysql2
encoding: utf8mb4
pool: 20
host: <%= ENV['DATABASE_WRITER_HOST'] %>
database: <%= ENV['DATABASE_NAME'] %>
username: <%= ENV['DATABASE_USER'] %>
password: <%= ENV['DATABASE_PASS'] %>
charset: utf8
reader:
adapter: mysql2
encoding: utf8mb4
pool: 20
host: <%= ENV['DATABASE_READER_HOST'] %>
database: <%= ENV['DATABASE_NAME'] %>
username: <%= ENV['DATABASE_USER'] %>
password: <%= ENV['DATABASE_PASS'] %>
charset: utf8
anotherdb:
adapter: mysql2
encoding: utf8
pool: 20
host: <%= ENV['ANOTHERDB_HOST'] %>
database: <%= ENV['ANOTHERDB_NAME'] %>
username: <%= ENV['ANOTHERDB_USER'] %>
password: <%= ENV['ANOTHERDB_PASS'] %>
migrations_paths: "db/anotherdb_migrate"
# ...
时不时会有新的栏位需要新增的到旧有的 table 里面,但预设 default 的都会在 updated_at
之後,不管是在 GUI 里看或者是 console 里面看都会满不容易观看的,且如果是与原本的栏位有关联,会偏向摆在一起,因此我们可以在 migration 中带 after
option 来告知新增在哪个栏位之後,也因为会是先跑 first_name 再跑 last_name 栏位的新增,自然而然 last_name 要新增时可以排在 first_name 之後。
# 20210914230020_add_first_name_and_last_name_to_user.rb
class AddFirstNameAndLastNameToUser < ActiveRecord::Migration[6.1]
def change
add_column :users, :first_name, :string, after: :id
add_column :users, :last_name, :string, after: :first_name
end
end
在建立 table_name 的时候有时候刚好撞到 rails 的惯例,但又不想要取惯例的名字的时候,会需要想设定自己想要的 Table 名称,像是名为 Index class,Rails 预设会是 indices,但可能对我们来说很不直觉,想要取叫做 indexes 比较合适
# migration
class CreateIndexes < ActiveRecord::Migration[6.1]
def change
create_table :indexes do |t|
# ...
t.timestamps
end
end
end
# app > models > index.rb
class Index < ApplicationRecord
self.table_name = "indexes"
end
元件介绍 Card 是一个可以显示单个主题内容及操作的元件,通常这个主题内容包含图片、标题、描述或是...
这什麽东西啊...我看着Asuka的信箱... 「你看,你那种想笑又不笑的脸,很讨厌耶。」 『他们发...
今天就来完成登入验证的部分! 昨天已经完成发送帐号密码到api,验证ok即发送一笔JWT给clien...
用python实作PLA (直接把训练资料写进程序里) 昨天才发现之前就交出去的作业code不小心...
观察 Firefox Chrome 网页 DNS 查询哪些 Domain Windows 有工具软件...