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/