參考 PostgreSQL:Linux downloads (Red Hat family) 來安裝PostgreSQL,比如 Fedora 35 可以這樣:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-35-x86_64/pgdg-fedora-repo-latest.noarch.rpm sudo dnf install -y postgresql13-server libpq-devel sudo /usr/pgsql-13/bin/postgresql-13-setup initdb sudo systemctl enable postgresql-13 sudo systemctl start postgresql-13
安裝完成後來初始化一個數據庫和用戶。
#使用 root 登錄 PostgreSQL sudo -u postgres psql #創建數據庫 CREATE DATABASE project; #創建新用戶 CREATE USER user42 WITH PASSWORD 'password42'; #下面這三行優化是 Django 推薦的 ALTER ROLE user42 SET client_encoding TO 'utf8'; ALTER ROLE user42 SET default_transaction_isolation TO 'read committed'; ALTER ROLE user42 SET timezone TO 'Asia/Taipei'; #把數據庫授權給新用戶 GRANT ALL PRIVILEGES ON DATABASE project TO user42; #退出數據庫 \q
要在 Django 中使用 PostgreSQL 數據庫,需要還安裝 psycopg2:
pip install Django psycopg2 #如果像我一樣在 Fedora 安裝失敗了 #可以嘗試安裝編譯好的版本 pip install Django psycopg2-binary
之後在項目的設置中把默認的 SQLite 數據庫資料改成 PostgreSQL 就可以了。更像詳細的步驟與解釋,可以參考:How To Use PostgreSQL with your Django Application on Ubuntu 20.04
刪除 Django 數據庫中的表格並重建
這似乎不是正確的回滾數據庫的操作辦法,但是也可以一試。
#從 migrations 目錄找到要刪除的數據庫變更文件,刪除掉 #進入數據庫操作程序 python manage.py dbshell #查看並找到要刪除的表名 SELECT * FROM pg_catalog.pg_tables; #如果是MariaDB,這樣查看表名 show tables; #比如表名爲 task_day,則這樣刪除 DROP TABLE task_day; #退出數據庫操作程序 exit; #刪掉數據庫裏的 migrations python manage.py migrate --prune task #現在可以重新建立表格了 python manage.py makemigrations python manage.py migrate
本文更新於 2022/10/24。