質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

1046閲覧

docker環境でデータの保存ができません

mikan0w022

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

1クリップ

投稿2021/06/11 07:28

編集2022/01/12 10:55

docker環境でデータの保存ができません

phpでのアプリケーションシステムの改修をしています。
初心者ですが、見様見真似でなんとかdocker構築しました。

localhostでの挙動確認もできますし、ローカルのphpMyAdminも確認できます。

構築時(3か月くらい前)は、普通にローカルDBへの保存もできていましたが、
久しぶりに起動してみると、localhost環境でのDB保存ができない状態です。

例えば、記事投稿機能で投稿ができない。書類を提出する機能でエラーとなる。
単にDBに拒否されているように感じるのですが、システムエラーなどが出るわけでもなく
どこを確認するのかもわかりません。

dockerDesktopでのDELETEからのdocker-compose build --no-cache --force-rmコマンドなど
数回しています。
mysqlのdata内を削除して、再ビルドしたりもしましたが、状況はかわりません。

何か可能性として考えられることはあるでしょうか?
どうかお願い致します。

以下docker設定ファイル

docker

1version: "3.8" 2 3services: 4 php73-httpd: 5 build: ./docker/php 6 container_name: php73-httpd 7 ports: 8 - 80:80 9 volumes: 10 - ./:/var/www/html 11 environment: 12 TZ: "Asia/Tokyo" 13 depends_on: 14 - db 15 16 db: 17 build: ./docker/mysql 18 container_name: db-host-database 19 ports: 20 - 3306:3306 21 volumes: 22 - ./docker/mysql/data:/var/lib/mysql 23 24 phpmyadmin: 25 image: phpmyadmin/phpmyadmin 26 container_name: phpmyadmin-horenso-sket 27 environment: 28 - PMA_ARBITRARY=1 29 - PMA_HOST=db-host-database 30 - PMA_USER=root 31 - PMA_PASSWORD=secret 32 links: 33 - db 34 ports: 35 - 8080:80 36 volumes: 37 - /sessions

mysql/dockerfile

1FROM mysql:8.0.19 2 3ENV TZ='Asia/Tokyo' \ 4 MYSQL_DATABASE=database \ 5 MYSQL_USER=root \ 6 MYSQL_PASSWORD=secret \ 7 MYSQL_ROOT_PASSWORD=secret 8 9COPY ./my.cnf /etc/my.cnf

php/dockerfile

1FROM php:7.3-apache 2 3# timezone environment 4ENV TZ=UTC \ 5 # locale 6 LANG=en_US.UTF-8 \ 7 LANGUAGE=en_US:en \ 8 LC_ALL=en_US.UTF-8 9 10RUN apt-get update && \ 11 apt-get -y install git libicu-dev libonig-dev libzip-dev unzip locales && \ 12 apt-get clean && \ 13 rm -rf /var/lib/apt/lists/* && \ 14 locale-gen en_US.UTF-8 && \ 15 localedef -f UTF-8 -i en_US en_US.UTF-8 && \ 16 docker-php-ext-install intl pdo_mysql mysqli zip bcmath 17 18RUN docker-php-ext-enable pdo_mysql 19 20# Install composer 21RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer 22 23# Add cake and composer command to system path 24ENV PATH="${PATH}:/var/www/html/lib/Cake/Console" 25ENV PATH="${PATH}:/var/www/html/app/Vendor/bin" 26 27WORKDIR ./app 28RUN mkdir -p \ 29 tmp/cache/models \ 30 tmp/cache/persistent \ 31 && chown -R :www-data \ 32 tmp \ 33 && chmod -R 770 \ 34 tmp 35 36COPY ./php.ini /etc/php.ini 37COPY ./apache/000-default.conf /etc/apache2/sites-available/000-default.conf 38 39RUN usermod -u 1000 www-data 40RUN groupmod -g 1000 www-data 41 42RUN a2enmod rewrite \ 43 && service apache2 restart

###docerのphpログ

特にエラーらしきものはわかりません、、、

172.26.0.1 - - [14/Jun/2021:11:42:06 +0900] "POST /board/entryWriting/?1623638442 HTTP/1.1" 500 989 "http://localhost/board/?tag=t90" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48" 172.26.0.1 - - [14/Jun/2021:11:42:14 +0900] "POST /board/getEntryList/?1623638450 HTTP/1.1" 200 515 "http://localhost/board/?tag=t90" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48" 172.26.0.1 - - [14/Jun/2021:11:42:21 +0900] "POST /board/getNewComment/?1623638457 HTTP/1.1" 200 515 "http://localhost/board/?tag=t90" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48" 172.26.0.1 - - [14/Jun/2021:11:42:28 +0900] "POST /board/updateEntryList/?1623638464 HTTP/1.1" 200 515 "http://localhost/board/?tag=t90" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48" 172.26.0.1 - - [14/Jun/2021:11:42:35 +0900] "POST /board/updateComment/?1623638471 HTTP/1.1" 200 515 "http://localhost/board/?tag=t90" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48" 172.26.0.1 - - [14/Jun/2021:11:42:42 +0900] "POST /consumer/getCheckData/?1623638478 HTTP/1.1" 200 291 "http://localhost/board/?tag=t90" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48"

###var_dumpでのコンソール

php

1Failed to load resource: the server responded with a status of 500 (Internal Server Error)

errir.log

php

12021-06-14 03:25:01 Error: [PDOException] SQLSTATE[HY000]: General error: 1364 Field 'complete' doesn't have a default value 2Request URL: /board/entryWriting/?1623641016= 3Stack Trace:

database.php

php

1class DATABASE_CONFIG { 2 3 // default 4 public $default = array( 5 'datasource' => 'Database/Mysql', 6 'persistent' => false, 7 'host' => 'db', 8 'login' => 'root', 9 'password' => 'secret', 10 'database' => 'database', 11 'prefix' => '', 12 'encoding' => 'utf8', 13 ); 14 // ローカル 15 public $local = array( 16 'datasource' => 'Database/Mysql', 17 'persistent' => false, 18 'host' => 'db', 19 'login' => 'root', 20 'password' => 'secret', 21 'database' => 'database', 22 'prefix' => '', 23 'encoding' => 'utf8', 24 ); 25 // 開発 26 public $dev = array( 27 'datasource' => 'Database/Mysql', 28 'persistent' => false, 29 'host' => 'localhost', 30 'login' => 'root', 31 'password' => '#####', 32 'database' => 'database_dev', 33 'prefix' => '', 34 'encoding' => 'utf8', 35 ); 36 // 本番 37 public $pro = array( 38 'datasource' => 'Database/Mysql', 39 'persistent' => false, 40 'host' => 'localhost', 41 'login' => 'root', 42 'password' => '######', 43 'database' => 'database_pro', 44 'prefix' => '', 45 'encoding' => 'utf8',

AppModel.php

php

1class AppModel extends Model { 2 3 public function __construct($id = false, $table = null, $ds = null) 4 { 5 $env = (isset($_SERVER['CAKE_ENV']) ? $_SERVER['CAKE_ENV'] : 'local'); 6 if ($env !== 'default') { 7 $this->useDbConfig = $env; 8 } 9 10 parent::__construct($id, $table, $ds); 11 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hope_mucci

2021/06/11 07:38

SELECTはできるがINSERTやUPDATEはできていないということでしょうか? まずはPHP側のログを確認しましょう。 - phpコンテナのコンソールにエラーメッセージが出ていないか - 出ていない場合は、phpコード側でDB更新処理の前後で怪しそうな変数をvar_dumpで出力する でできたログで原因が特定できるならそれでヨシです。できない場合はログを質問本文に追記してください。コードもログもなければネット越しの我々は何も状況がわかりません。
mikan0w022

2021/06/14 03:02

ありがとうございます! var_dumpするとサーバーエラーはでますが、具体的に内容がわかりません(><) 既存のアプリケーションにdocker構築していて、そのアプリケーションに同じように構築しているはずなので、ソースはあまり関係ないと思います。 なのでdockerの設定が悪いとは思うのですが、、、 最近IPアドレスを変えましたが・・・関係ないですよね。。。
guest

回答2

0

error.logの
General error: 1364 Field 'complete' doesn't have a default value
が直接のサーバーエラーの原因では。
insert対象テーブルに completeというカラムはありませんか。おそらくDB側でdefault valueが設定されていない状態で値無指定のinsertをしようとしているのではないでしょうか。

エラーメッセージで検索したら対処法を載せているqiita記事が一番上に来ました。

https://qiita.com/seltzer/items/3096f0805440bfa19bff

記事の信ぴょう性はうーん?なので上記の内容でバッチリ解決するかどうか不明ですが、まずは記事通り試してみましょう。

※初回構築時と現時点でMySQLのバージョンを変えたりしてませんよね?

投稿2021/06/14 09:59

hope_mucci

総合スコア4447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHPのアプリケーション側にDBの設定は入っていますか?
見た感じPHP側で環境変数は設定されていないように見えるのですが。

投稿2021/06/11 08:07

inductor

総合スコア428

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikan0w022

2021/06/14 03:04

ありがとうございます!! アプリケーション側とは、どこを確認したらよろしいでしょうか? 質問にdatabase.php追記いたします。 他に確認する場所等あれば御指南お願いします(><)
inductor

2021/06/15 22:07

この問題とは別ですが、データベースの接続情報をソースコードに直書きするのは非常に危険なのでやめましょう・・・環境変数で設定することを強く推奨します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問