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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

MySQL

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Elastic Load Balancing

Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

714閲覧

AWS MySQL string(44) "SQLSTATE[HY000] [2019] Unknown character set"エラーが出る

gordbul

総合スコア17

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

MySQL

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Elastic Load Balancing

Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/07/12 12:15

編集2021/07/12 12:27

AWS初心者で、わかっていない部分が多く、うまく説明ができないかもしれません。ご理解お願いします。

ネット掲示板を作っています。
イメージ説明
こういった構成で組み立てています。
ELB → EC2 → RDSという流れです。(図を見てください)

一応全て完成し、ELBのエンドポイントに接続してみたところ、「string(44) "SQLSTATE[HY000] [2019] Unknown character set"」というエラー画面が出ました。
文字コードが違う、ということだと思うのですが、どこの設定が間違っているのか、どう対応したらいいかわかりません。

掲示板のhtmlとphp

PHP

1<?php 2$dsn = "mysql:host=<RDSのエンドポイント>;dbname=<名前>;charset=utf8"; 3$dsn_id = "dbuser"; 4$dsn_pw = '<パスワード> '; 5$stmt = null; 6try{ 7 $pdo = new PDO($dsn,$dsn_id,$dsn_pw,array(PDO::ATTR_EMULATE_PREPARES, false)); 8 $stmt = $pdo->query("SELECT * FROM posts"); 9} 10catch(PDOException $e){ 11 var_dump( $e->getMessage()); 12} 13 14 15?> 16 17<!DOCTYPE html> 18<html lang="ja"> 19<head> 20<meta charset="utf-8"> 21<title>掲示板</title> 22</head> 23<body> 24<h1>掲示板</h1> 25<ul> 26<?php foreach($stmt as $row ):?> 27<li> 28<div> 29<div class="datatime"><?php echo htmlspecialchars($row['created'],ENT_QUOTES,'UTF-8'); ?> 30<div class="body"><?php echo htmlspecialchars($row['body'],ENT_QUOTES,'UTF-8'); ?> 31 32</div> 33<div> 34</li> 35<?php endforeach; ?> 36</ul> 37 38</body> 39</html> 40

やったこと

パラメーターストアで文字コードを全てutf8にする。
my.cnfで文字コードを全てutf8にする。
RDSの再起動

MySQLの文字コード

Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.6.35.R1/share/charsets/

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

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

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

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

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

yu_1985

2021/07/12 15:29

原因は違いそうですが似たようなトラブルシュートをしているのでこちらをご参照ください。 https://teratail.com/questions/253674 var_dumpでエラー内容を取得しているのでその内容をここに貼るといいと思います。
guest

回答1

0

一旦$dsn内の「charset=utf8」削除して試してみると良いでしょう

投稿2021/07/13 05:06

yambejp

総合スコア114839

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問