ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
MySQL エラー番号一覧(よく出会うもの)
| エラー番号 | SQLSTATE | 意味 | 主な原因 |
|---|---|---|---|
1045 | 28000 | Access denied for user | パスワード / ホスト / ユーザー不一致 |
1049 | 42000 | Unknown database | DB 未作成 / typo |
1062 | 23000 | Duplicate entry | PRIMARY / UNIQUE 重複 |
1064 | 42000 | SQL syntax error | 構文エラー / 予約語 |
1093 | HY000 | You can't specify target table for update in FROM clause | UPDATE 対象を直接サブクエリで参照 |
1146 | 42S02 | Table doesn't exist | テーブル未作成 / DB 違い / 大小文字 |
1170 | 42000 | BLOB/TEXT used in key without prefix length | TEXT 列を INDEX 指定(prefix 必須) |
1318 | 42000 | Incorrect number of arguments for PROCEDURE | 引数の数違い |
1366 | HY000 | Incorrect integer value | strict mode で空文字を int 列に投入 |
1451 | 23000 | Cannot delete or update a parent row | 子レコードが残っていて FK 違反 |
1452 | 23000 | Cannot add or update a child row | FK 先の親が存在しない |
2002 | HY000 | Can't connect to local MySQL server | サービス停止 / ソケットパス違い |
2003 | HY000 | Can't connect to MySQL server on host | FW / port / bind-address |
2006 | HY000 | MySQL server has gone away | wait_timeout / max_allowed_packet 超過 |
2013 | HY000 | Lost connection during query | 長時間クエリ / ネットワーク切断 |
ERROR 1045: Access denied for user
ERROR 1045 (28000): Access denied for user 'app'@'192.168.1.5' (using password: YES)
典型的なチェック:
-- ユーザー / ホスト一覧
SELECT user, host FROM mysql.user;
-- 'app'@'%' があり 'app'@'192.168.1.5' が無い場合は % が優先されないことに注意
-- パスワード再設定
ALTER USER 'app'@'%' IDENTIFIED BY 'NewPass!';
FLUSH PRIVILEGES;
-- 権限確認
SHOW GRANTS FOR 'app'@'%';
ERROR 1062: Duplicate entry
ERROR 1062 (23000): Duplicate entry 'taro@example.com' for key 'users.users_email_unique'-- どのインデックスで衝突したか確認
SHOW INDEX FROM users WHERE Key_name = 'users_email_unique';
-- UPSERT で回避
INSERT INTO users (email, name) VALUES ('taro@example.com', 'Taro')
ON DUPLICATE KEY UPDATE name = VALUES(name), updated_at = NOW();
-- 既存重複データを集計
SELECT email, COUNT(*) FROM users GROUP BY email HAVING COUNT(*) > 1;
ERROR 1064: SQL syntax
大半は予約語の未エスケープ・カンマ忘れ・クォート不一致です:
-- ❌ order は予約語
CREATE TABLE order (id INT);
-- ✅ バッククォートで囲む
CREATE TABLE `order` (id INT);
-- ❌ クォートが閉じていない
SELECT * FROM users WHERE name = 'taro;
-- ✅
SELECT * FROM users WHERE name = 'taro';
ERROR 2002: Can't connect to local MySQL server
# サービス確認
systemctl status mysqld # rpm 系
systemctl status mysql # deb 系
systemctl status mariadb # MariaDB
# ソケットパス確認
mysql_config --socket
# /var/lib/mysql/mysql.sock
# 起動
sudo systemctl start mysqld
# tcp 経由に切替(ローカルソケットが見つからない場合)
mysql -h 127.0.0.1 -P 3306 -u root -p
ERROR 1452 / 1451: 外部キー違反
-- 1452: 子に親未存在
-- 1451: 親に紐づく子が残っている
-- 一時的に FK チェックを無効化(一括 import 等)
SET FOREIGN_KEY_CHECKS = 0;
-- ... 大量 INSERT ...
SET FOREIGN_KEY_CHECKS = 1;
-- 親レコードを先に投入
INSERT INTO categories (id, name) VALUES (1, 'IT');
INSERT INTO articles (id, category_id, title) VALUES (1, 1, 'MySQL Guide');
-- 削除時は ON DELETE CASCADE / SET NULL を検討
ALTER TABLE articles
ADD CONSTRAINT fk_cat FOREIGN KEY (category_id) REFERENCES categories(id)
ON DELETE CASCADE;
ERROR 1366: Incorrect integer value
strict mode で空文字や文字列を INT 列に入れようとすると出ます。
-- strict mode 確認
SHOW VARIABLES LIKE 'sql_mode';
-- 一時的に外す(推奨しない)
SET SESSION sql_mode = REPLACE(@@sql_mode, 'STRICT_TRANS_TABLES', '');
-- 正しい修正: アプリ側で空→NULL 変換
INSERT INTO users (age) VALUES (NULL); -- ✅
INSERT INTO users (age) VALUES (''); -- ❌ 1366
ERROR 1093: target table for update in FROM clause
-- ❌
DELETE FROM users WHERE id IN (SELECT MIN(id) FROM users GROUP BY email);
-- ✅ サブクエリを別名でラップ
DELETE FROM users WHERE id IN (
SELECT id FROM (
SELECT MIN(id) AS id FROM users GROUP BY email
) AS t
);
ERROR 1170: BLOB/TEXT used in key without prefix length
-- ❌ TEXT 列をそのまま INDEX
CREATE TABLE posts (body TEXT, INDEX (body));
-- ✅ prefix length 指定
CREATE TABLE posts (body TEXT, INDEX (body(255)));
-- 全文検索したいなら FULLTEXT
CREATE TABLE posts (body TEXT, FULLTEXT (body));
ERROR 2006 / 2013: gone away / Lost connection
| 原因 | 確認 / 対処 |
|---|---|
| wait_timeout 経過で切断 | SHOW VARIABLES LIKE 'wait_timeout'; / アプリで再接続 |
| max_allowed_packet 超過 | SET GLOBAL max_allowed_packet = 64*1024*1024; |
| OOM Killer に殺された | dmesg | grep -i mysql / メモリ増設・innodb_buffer_pool 調整 |
| ロードバランサのアイドルタイムアウト | TCP keepalive / コネクションプール調整 |
調査用スニペット
-- 直近のエラー / 警告
SHOW WARNINGS;
SHOW ERRORS;
-- ステータス
SHOW GLOBAL STATUS LIKE 'Aborted%';
SHOW GLOBAL STATUS LIKE 'Connections';
-- 実行中スレッド
SHOW FULL PROCESSLIST;
-- ロック状況
SELECT * FROM performance_schema.data_locks\G
SHOW ENGINE INNODB STATUS\G
-- スロークエリ ON
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
FAQ
Q: アプリのエラーログにはエラー番号が無い
A: ドライバ層で握りつぶされていることが多い。PDOException::getCode() / mysqli_errno() で取得を。Laravel なら QueryException::errorInfo。
Q: ステージングでは出ないのに本番でだけ 1366 が出る
A: sql_mode がサーバごとに違う。my.cnf の sql_mode を揃え、strict 前提で開発を。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
- 1071 Specified key was too long; max key length is 767 bytes
- ERROR 1063 (42000): Incorrect column specifier for column '~'
- mysqld: Can't change dir to '...\MySQL\MySQL Server X.X\data\' (OS errno 2 - No such file or directory)
- Install/Remove of the Service Denied!
- Datetime 型が NULL に見える
- Warning: World-writable config file '/etc/mysql/my.cnf' is ignored
- ERROR 1698 (28000): Access denied for user 'root'@'localhost'
- Exception: Wrong MySQL configuration
- [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
- ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- Incorrect column specifier for column 'カラム名'
- BLOB/TEXT column 'description' used in key specification without a key length
- ERROR: /bin/sh: mysql_config: コマンドが見つかりません
- Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
- CSVエクスポート時に「ERROR 1045 (28000): Access denied for user 'username'@'localhost'」エラーが表示される
- Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT
- 1
- 1
- 1)
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1"'`--
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1)
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1"'`--
- 1
- 1
- SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: ~
同階層のページ
- ダウンロード&インストール方法(Windows)
- インストール方法(Linux)
- コマンド一覧
- SQL
- データ型
- 関数
- 管理ツール
- 設定
- パフォーマンスチューニング関連
- エクスポートおよびインポート
- エラー&トラブル
- 文字コードの確認
- 実行中の SQL の状態確認およびプロセスキルの方法
- パスワードの無効化設定
- root ユーザーの初期パスワード確認方法
- rootユーザーのパスワード変更方法
- LIMIT, OFFSET の始まりと挙動
- mysqlのバージョン確認方法
- 実行計画の表示方法
- レプリケーションのステータス確認方法
- 中央値の導き方(バージョン8未満)
- 階層SQL(バージョン8未満)
- パーセンタイルの導き方
- 特定スキーマの全テーブルの全カラム情報を取得する方法
- MySQLで文字列の置換をする方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?