アフィリエイト広告を利用しています

2019年11月23日

latin1をutf-8に変更する

mysql の文字コードを確認するコマンド


show variables like '%char%';


実行すると

character_set_server =latin1

になっている。

latin1ではなくutf8が正しい状態だが、

utf8に変更するにはmysqlの再起動が必要。

システムはもうオープンしていて、勝手に再起動できない。

何より、もうデータが登録されている。データは文字化けしていないか心配。

調べて見ると

ウムラウト等の特殊文字も漢字もシステム上では正しく表示されているし、

データをUTF-8形式でダウンロードすれば文字化けしていない。

問題なさそうだが、phpMyAdminでは文字化けして表示される。

sshで接続してコマンドベースでmysqlを操作した場合も文字化けしている。

トラブルがなければ大丈夫な状態

データベースが破損するようなトラブルに見舞われるようなことがなければ、

今のままで大丈夫。

しかし、mysqldumpで取得したバックアップファイルからデータベースを復元しようとすると

文字化け部分は復旧不能となる。

これでは不安なので、latin1をutf8にすることに決めた。

設定変更だけで済む?

データベースには utf8 で登録されていて、

見え方に問題があるので

character_set_server = utf8

にして、mysqlを再起動すれば解決すると思った。

実行してみると予想とは違った。

ウムラウト等の特殊文字と漢字がphpMyAdmin上に加えて、

システム上でも文字化けするようになった。まずいので、

character_set_server = latin1

に戻した。

データ変換を行う

失敗してみて、

character_set_server = utf8

にするのに合わせてデータの変換も必要と分かった。

幸いなことに、ウムラウト等の特殊文字と漢字はまだ

10数件しか登録されていない。そこで、

@ウムラウト等の特殊文字と漢字の正しい値をメモ書き

Acharacter_set_server = utf8にし、mysqlを再起動

B文字化けした箇所を@のメモを見ながら手作業で修正。

これでうまく行った。約30分で終了。

ちなみにAではmy.cnfファイルの[mysqld]に

character-set-server = utf8

を追加した。

最後に思うこと

mysqlのデフォルト値を utf 8にしてもらいたい。













posted by db-engineer at 00:00 | Comment(0) | Mysql

2019年11月18日

mysqldumpの実行

mysqldumpを実行する。


mysqldump -u ユーザ名 -pパスワード データベース名 > バックアップファイル名

注) -pとパスワードの間はスペースなし


cronを使って、毎日同じ時間に実行する。

そして、mysqldumpコマンド内にパスワードを記載したくない。

パスワードをファイル保存しておく


パスワードをコマンド内に記入するのと、別ファイルに保存するので、

セキュリティ上、差があるとは思えないが。

my.cnf にパスワードを記入して、以下を実行する。


mysqldump --defaults-file=/home/my.cnf -u ユーザ名 --databases データベース名> バックアップファイル名

注)この例では my.cnf を /home ディレクトリに置いています。

my.cnfの中身


[mysqldump]
password="パスワード"

これだけ。









posted by db-engineer at 08:47 | Comment(0) | Mysql

2019年11月06日

ダウンロードエラー

ユーザがアップロードしたファイルを

管理画面でまとめて圧縮してダウンロードできるようにしていた。

しかし、いつからかダウンロードできなくなってしまった。

原因


エラーログを確認すると以下のエラーが。


PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 79392768 bytes) in /home/〜/〜.php on line 493


Webで検索するとphpのメモリ上限を超えてしまったらしい。

対応策

php.iniファイルの memory_limit の変更すれば良いそうだが、

稼働中のシステムを停止することはできないので

ダウンロードを実行するプログラム中に以下のコマンドを追加した。

ini_set("memory_limit", "200M");

その後、256Mにしたがやはり同様のエラーが発生するので512Mにした。










posted by db-engineer at 00:00 | Comment(0) | PHP

2019年11月04日

カラム一覧、項目一覧


describe テーブル名


ど忘れなのか、年のせいなのか。

どちらでも良い。

とにかく思い出せなくなり、Webで検索した。

describe

だ!








posted by db-engineer at 00:00 | Comment(0) | Mysql

2019年11月02日

Redhat Linux Enterprize Server サブスクリプション騒動


This system is not registered with an entitlement server. You can use subscription-manager to register.

Redhat Linuxでyumコマンドを使用中に上のエラーメッセージに気付いた。

PHPのインストールを任され、実施していたのだが、

インストールは不慣れなのでWebでお手本になるページを見つけて

その通りに行うしかない。

だが、そのページの記載と少しでも違うメッセージが表示されると

対処法が分からないので、すぐにお手上げになるというお寒い状況。

そんな中で remiリポジトリを追加しようと下記のコマンドを実行。



すると表示されたのが上記のエラーメッセージ

迷走


サブスクリプション登録が不完全なため、yumを実行できない状態と判断し、

Redhat Network(https://www.redhat.com/wapps/sso/login.html)に登録した。

登録したIDとパスワードを使って、yumコマンドを再実行したが

そのIDは受け付けてもらえなかった。

個人で登録したIDだからダメなのかと思い、

サーバ所有者のIDとパスワードを教えてくれるよう、

所有者に頼んだ。

すると、所有者は「サブスクリプション登録は行っていない。」とのこと。

結局


所有者はさらに「PHPのインストールがうまくいかないのは

サブミッション登録とは関係なく、epelリポジトリがないことが原因」と教えてくれた。

アドバイスにしたがい epelリポジトリをインストール後、

remiリポジトリをインストールすると、やはり、


This system is not registered with an entitlement server. You can use subscription-manager to register.


が表示された。しかし、そのままPHPのインストールを継続するとインストールを完了できた。

何だかよく分からないが、


This system is not registered with an entitlement server. You can use subscription-manager to register.


は表示されても気にしなくて良さそう。

PHPは問題なく動作している。











posted by db-engineer at 00:00 | Comment(0) | Linux

最新記事
検索
カテゴリーアーカイブ
プロフィール
db-engineerさんの画像
db-engineer
プロフィール
タグクラウド