PHPをアップロードし、初期設定を実行した直後に、`SQLSTATE[42000]`と`1064`。末尾には`near 'lead TEXT NOT NULL'`。直して再実行すると、今度は`near 'OR IGNORE INTO'`で止まる。AIにエラーを渡すたび別のファイルが返り、何を残せばいいのか分からなくなる――そんな場面で、まず変更を止めて開く記事です。この二つの表示は、実際の不具合の申告をきっかけに、別の環境でも再現しました。MySQLへ送ったSQLに絞って確かめます。
全文の差し替えを重ねると、最初の不具合と新しい変更が混ざります。エラーを無視して表示だけ消すと、保存値の違いを見落とすことも。今回の試験では999が127で保存されました。架空の数値欄での結果で、あなたのデータが壊れたという意味ではありません。「赤い文字が消えた」を終了条件にしないことが出発点です。
この記事で作るのは、二つの1064を再現し、修正後の読戻しまで確かめるPHP検証キットです。コード全文、実行結果、図解3点、AIへ修正範囲を限定して伝える指示文を収録。列名leadとSQLite用のINSERT OR IGNOREを対象に、保存→検証→最小修正→再確認の一本道で進めます。Windows、PHP 8.3.33、MySQL 8.4.7で検証しました。ロリポップ本番の再検証や、すべての1064の解消を保証する内容ではありません。PHPのコマンド実行、PDO MySQL、新規の検証用DBと接続情報が必要です。DB作成と接続ができない方、共有DBしか使えない方は対象外。サーバー契約費などは別途必要な場合があります。本番データの削除・初期化は行いません。
最初にAIへ渡す指示は、次の一行です。
修正対象を、エラーになったSQLとその実行箇所に限定してください。これは抜粋です。全体を確認してから使ってください。この先では、退避するもの、実行するコード、次へ進める出力を示します。修正を頼むだけでなく、返ってきた変更を自分で判定できる状態にします。
