今天遇到錯誤訊息耽誤了很久:
... foreign key constraint 'xxx_id_foreign' are incompatible.
錯誤訊息沒有詳細列出可能的錯誤,追了很久才知道有一些地方要注意。
More “Laravel Migration 出現 foreign key constraint in complete 注意事項” »
軟體開發、伺服器和生活瑣事
今天遇到錯誤訊息耽誤了很久:
... foreign key constraint 'xxx_id_foreign' are incompatible.
錯誤訊息沒有詳細列出可能的錯誤,追了很久才知道有一些地方要注意。
More “Laravel Migration 出現 foreign key constraint in complete 注意事項” »
遠端連線到 PostgreSQL 時,遇到錯誤訊息:
SCRAM authentication requires libpq version 10 or above
這個問題主要是新舊版本儲存使用者密碼的方法不同所導致的,只要讓 PostgreSQL 支援 MD5 儲存密碼即可。
開啟 postgresql.conf
修改 password_encryption
參數:
password_encryption = md5
再來修改 pg_hba.conf
,讓使用者驗證的時候使用 MD5 方式驗證:
# IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 host all zeroplex 0.0.0.0/0 md5
設定檔修改後記得重新啟動 PostgreSQL。
設定檔改好、啟動也沒問題,就來更新使用者密碼,這樣一來,PostgreSQL 的密碼儲存方式就會改用 MD5:
ALTER USER zeroplex WITH PASSWORD 'your-password'
遇到一個奇怪的需求,要備份特定資料表的資料。因為很懶所以直接從 SQL 動手。
用 show create table 複製原有資料表的 schema:
> show create table users G
***************************[ 1. row ]***************************
Table | users
Create Table | CREATE TABLE `users` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_email` (`email`)
) ENGINE=InnoDB
再來用 「insert into select」 的方法來從原有的資料表拉資料:
insert into backup (name, email)
select name, email from users where id in (1, 3, 5)
這個作法好像會比一次一筆資料拉還要快一些,不過要注意的是 id (或是 auto_increment) 等欄位要忽略,讓 DB 自己處理,不然之後新增資料可能會出現 duplicated keys 之類的問題。