トラブルシューティング
「操作していないのに後から動く」の正体 どうしてキューが溜まるのか 実際に起きる挙動 さらに深刻なケース パフォーマンスへの影響 `stop()`だけでは足りない理由 `finish()`との違い キューが詰まりやすいUI 根本対策 CSSアニメーションとの違い 最後に …
新人がハマるMySQLエラーランキング 第7位:Unknown column 第6位:Table doesn't exist 第5位:Duplicate entry 第4位:Lock wait timeout exceeded 第3位:Data too long for column 第2位:Incorrect datetime value 第1位:Cannot add or update a child…
ORMのエラーはアプリのバグとは限らない なぜ突然起きるのか よく出るエラー1:GROUP BY よく出るエラー2:日付 よく出るエラー3:文字列長 なぜORMで特に起きるのか 実際に起きる誤診 応急処置として行われがちなこと 確認すべき項目 なぜ「突然」起きるの…
開発では動くのに本番だけ落ちる ― SQLの問題に見えて環境の問題 sql_modeとは何か 典型例:日付カラム 典型例:文字列長 典型例:GROUP BY なぜ本番だけ違うのか もう一つの原因:文字コード なぜ再現しないのか 危険な対応 正しい対処手順 本質的な問題 ま…
MySQL8.0にしたらログインできない ― それはパスワードが間違っているわけではない 何が変わったのか ― caching_sha2_password mysql_native_password caching_sha2_password 実際に起きるエラー なぜこんな変更が入ったのか なぜDockerやローカルでは起きな…
「同じSQLなのに結果が違う」は珍しくない GROUP BYの代表値問題 ORDER BYの並び順が変わる 比較演算の変化(暗黙型変換) 日付の扱い NULLの扱い インデックスの効き方が変わる 文字列長とインデックス なぜこんなことが起きるのか 対策の方向性 まとめ 「…
小さな設定ファイルに見えて、実はプロジェクトの前提条件 よくある最初の書き方 ワイルドカード指定の危険 ^ と ~ の意味を知らない問題 PHPバージョンを書いていない autoloadを設定していない scriptsの誤用 なぜ修正が難しいのか 注意点:lockファイルを…
原因は「余計なライブラリ」だった require と require-dev の違い なぜ本番に入ってしまうのか 実際に起きた症状 セキュリティ上のリスク よくある誤解:require-devは読み込まれない 防止策 デプロイ時のコマンドを固定する composer.lockを必ず使う CIで…
原因はコードではなく「PHPのバージョン」だった きっかけ:環境移行 実際に起きていたこと なぜinstallで壊れるのか composer.jsonの見落としがちな項目 よくある誤解:Composerが勝手に入れた 解決方法 1. PHPバージョンを確認 2. platform設定を使う 3. …
最初は「1つのライブラリを入れるだけ」のはずだった 最初の異変:フレームワークが起動しない 起きていたこと:依存の“連鎖更新” なぜrequireだけで壊れるのか 典型的なエラーメッセージ 解決までにやったこと 依存地獄とは何か 有効だった対処法 注意点:…
まず結論:Composerが壊したのではなく「状態が変わった」 「コードを触っていない」は本当に安全か 何が実際に変わっているのか composer.lockが一致していない 本番だけ壊れる理由 環境差異 よくある犯人:間接依存 Composerが疑われる理由 確認すべきポイ…
何も変更していないのに動かなくなることは本当に起きる その日何が起きたのか 軽い気持ちで実行したコマンド 実際に起きていたこと 間接依存が最も危険 なぜinstallでは起きないのか よくある誤解:updateは安全なメンテナンスではない 実際の復旧手順 なぜ…
Composerキャッシュとは何か よくあるハマり方その1:バージョンを上げたはずなのに変わらない よくあるハマり方その2:CIだけ落ちる よくあるハマり方その3:privateリポジトリの更新が反映されない 実際にやるとこうなる:キャッシュクリアで一発解決 キャ…