20200101のMySQLに関する記事は2件です。

django アプリケーション毎に データベースを分ける

settings.py

INSTALLED_APPS = [
    ...
    'app1.apps.App1Config',
    'app2.apps.App2Config',
]


DATABASES = {
    'default': {
        ....
    },
    'db2': {
        ....
    },
}
DATABASE_ROUTERS = ['config.db_router.DbRouter']

modelに追加

※重要
ここのapp_labelをmodel_routerで識別する

class User(models.Model):
class Meta:
app_label = 'apiv2'

ファイル追加

config/db_router.py

class DbRouter:
    def db_for_read(self, model, **hints):

        if model._meta.app_label == 'apiv1':
            return 'default'
        if model._meta.app_label == 'apiv2':
            return 'db2'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label == 'apiv1':
            return 'default'
        if model._meta.app_label == 'apiv2':
            return 'db2'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        return True

    def allow_migrate(self, db, app_label, model=None, **hints):
        if app_label == 'auth' or app_label == 'contenttypes' or app_label == 'sessions' or app_label == 'admin':
            return db == 'default'
        if app_label == 'apiv1':
            return db == 'default'
        if app_label == 'apiv2':
            return db == 'db2'
        return None

migrate

CORS_ORIGIN_ALLOW_ALL

CORS_ORIGIN_WHITELIST

が邪魔するので一旦コメントアウト

docker-compose run back ./manage.py makemigrations
docker-compose run back ./manage.py migrate --database=db2  
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQL で The server quit without updating PID file というエラーが出た時

mysqlが起動しない

mysqlを起動しようとコマンドを打ったところ、エラーが発生した。

$ sudo mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/****.local.pid).

原因

エラーログを確認。

$ sudo tail -f /usr/local/var/mysql/****.local.err | grep ERROR 
2019-12-31T18:01:14.011891Z 0 [ERROR] [MY-010274] [Server] Could not open unix socket lock file /tmp/mysql.sock.lock.

解決

lock fileを削除。

$ sudo rm -rf /tmp/mysql.sock.lock

その後起動すると...

$ sudo mysql.server start
Starting MySQL
.. SUCCESS! 

起動できました!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む