【Laravel】DB接続がうまくいかない時に確認すること

概要

DB接続がうまくいかなかった時に確認すること。うまくいかなすぎて疲れまくったので本当にメモとして残すが、何かのヒントになればと思う。

確認すること

  • PHP7.xとmysql8.xの互換性がとれないためエラーを起こす。 mysql8に上がってからデフォルトの認証方法が変わったみたいでエラーを起こす。

blog.websandbag.com

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known
  • docker-comopseのボリュームが過去に使ったものを参照している 以下で完全に消せる。docker volume lsで一覧を確認すると良い。
docker-compose rm -v
docker-compose down -v
docker volume prune

【Nuxt】外部モジュールのgetterへのアクセス方法

概要

外部モジュールのgetterへのアクセスができない!ということに遭遇したのでメモ。

解決策

getterに対して名前空間を指定する。 例えば、store/xxx.jsというモジュールのgetHogeというgetterにアクセスしたい場合は以下のようにする。

store.getters['login/isAuthenticated']

なんかキー指定であることやキーの中にもスラッシュが入っていたりしてしっくりこないけど。 (ドット区切りの記法で取得できる方がいれば教えていただきたいです)

参考

stackoverflow.com

【Vuex】[vuex] unknown action type: Xxx と言われたのでメモ

概要

VuexのmapActionsヘルパーを使った際に以下のエラーが出てきたのでメモ。

[vuex] unknown action type: Xxx

解決策

store/index.jsにactionに記載すればmapActionsが検出できる。ただ、この記事を読んでいる人が求めているのはそんなことではないだろう。 store/xxx.jsを作成して、、、みたいにファイル分割をしたいはずだ。 VuexのAPIドキュメントを見てみると以下の記載がある。

mapActions(namespace?: string, map: Array | Object): Object

第一引数がnullableな引数で名前空間を指定していて、第二引数でどんなactionをマッピングしたいかを宣言する。 私は、第一引数の名前空間を指定していなかったため今回のエラーが発生した。そのため以下のようにして対応をした。 (store/xxx.jsのXxxアクションを利用する場合)

...mapActions('xxx', [
  'Xxx',
]),

参考

mapActions

【vuex】Do not mutate vuex store state outside mutation handlersがでた

概要

以下のエラーが出たのでメモ。

Do not mutate vuex store state outside mutation handlers

解決方法

私はnuxtを使っているので純vuexではどうなのかわからないが、storeを管理しているエントリ部( store/index.js )の先頭で以下を記述する。

export const strict = false

参考

github.com

【python】NameError: name 'reduce' is not defined といわれた

概要

以下のエラーメッセージが出てきたためメモ。

NameError: name 'reduce' is not defined

解決策

functoolsにreduce関数が移動されたみたいなのでimportして使う。

from functools import reduce

参考

stackoverflow.com

【python】TypeError: 'float' object is not iterable といわれた

概要

以下のエラーが発生したためメモ。

TypeError: 'float' object is not iterable

解決策

list(1)やlist(1.0)のようなキャストが発生している場合に発生する。 以下のようにすればOK。

list([1])

【python】TypeError: Object of type 'map' is not JSON serializable といわれた

概要

以下のエラーが出たのでメモ。

TypeError: Object of type 'map' is not JSON serializable

解決策

pythonにおいてmapはジェネレータであるらしい。そのため、JSONシリアライズする場合はmapをlistに変換する必要があるので以下のようにする。

list(hoge)

# もしくは
from collections import OrderedDict
OrderedDict(weeds)

参考

stackoverflow.com

関数型プログラミング HOWTO — Python 3.6.5 ドキュメント