mysql
サーバーを再起動したら mysql に繋がらなくなった。
サイトにアクセスしたときに表示された PHP のエラーメッセージ
-----------------------------------------------------------
Warning: mysql_set_charset(): No such file or directory in /var/www/libs/~~~~
Warning: mysql_set_charset(): A link to the server could not be established in /var/www/~~~~~
ConnectError!DB Error: connect failed
-----------------------------------------------------------
ターミナルから mysql にログインすると次のエラー
-----------------------------------------------------------
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
-----------------------------------------------------------
socketファイルというものが無いのが原因のよう。
ターミナルから mysql を再起動するとsocketファイルが作られるらしいので、再起動して解決。
-----------------------------------------------------------
sudo /etc/init.d/mysqld restart
-----------------------------------------------------------
参考サイト
https://qiita.com/kanohisa/items/564035efd74d9c75bdcb
カテゴリー:CentOS, mysql
phpmyadminにログインできない
ログインすると以下の画面

Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
session_write_close(): write failed: No space left on device (28)
session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session)
セッション開始中にエラーが発生しました。 PHPやWebサーバーのログファイルをチェックして、PHPのインストールを正しく設定してください。また、ブラウザでクッキーが有効になっていることを確認してください。
ターミナルから実行
--------------------------------
df -h コマンドを実行する。
--------------------------------

ファイル容量がいっぱいなので不要なファイルを削除する
参考サイト
https://qiita.com/myzkyy/items/53e985cf028e3c3edfe5
カテゴリー:mysql
mysql のデータベース内に入っているデータをphpを使ってデータマイニングした際、時間がかかったのでしたこと。
何も対策せずにすると35日ほどかかった。
もう一度する必要でてきたのでそのときにしたこと。
ブラウザを複数立ち上げて同時に処理していった。
このとき同じブラウザ(IE)でやると、それぞれのブラウザで処理が倍になってトータル時間が変わらなかった。
なので、IE、chrome、opera の三つで同時に行った。
単純に三倍速くはならなかったけど、2.5倍ほど早くなったように思う。
カテゴリー:mysql, PHP, データマイニング
mysql で update を実行した際、以下のエラーが出た
-------------------------------------------------
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
-------------------------------------------------
ROW_FORMATが「Compact」のときに、8126バイト以上のレコードを入力しようとすると出るエラーらしい。
ターミナルの mysql から現在の ROW_FORMAT を確認
-------------------------------------------------
use データベース名 ← データベースを選択
SHOW TABLE STATUS LIKE 'テーブル名'\G
-------------------------------------------------
出力結果
*************************** 1. row ***************************
Name: テーブル名
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 35155
Avg_row_length: 4583
Data_length: 161136640
Max_data_length: 0
Index_length: 0
Data_free: 6291456
Auto_increment: 46319
Create_time: 2018-03-09 16:18:39
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)
Row_format の Compact の部分を、DYNAMIC か COMPRESSED に変更すれば消えるらしい。で、変更するには innodb_file_format が Barracuda になっていないといけない。
innodb_file_format を確認
-------------------------------------------------
mysql> SHOW GLOBAL VARIABLES LIKE '%innodb_file_%';
-------------------------------------------------
出力結果
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Antelope |
| innodb_file_format_check | ON |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON |
+--------------------------+-----------+
4 rows in set (0.00 sec)
innodb_file_format が Antelope なので Barracuda に変更する必要がある。
my.cnfを編集
-------------------------------------------------
vim /etc/my.cnf
-------------------------------------------------
[mysqld]以下に追記
-------------------------------------------------
[mysqld]
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
-------------------------------------------------
service mysqld restart で再起動
変更を確認
mysql> SHOW GLOBAL VARIABLES LIKE '%innodb_file_%';
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Barracuda |
| innodb_file_format_check | ON |
| innodb_file_format_max | Barracuda |
| innodb_file_per_table | ON |
+--------------------------+-----------+
4 rows in set (0.00 sec)
↑一度 mysqld を再起動しても反映されていない時があった。必ず反映していることを確認すること。
ここまでで、Row_format を Compact → DYNAMIC (or COMPRESSED)に変更する下準備ができたことになる。
再度確認
-------------------------------------------------
use データベース名 ← データベースを選択
SHOW TABLE STATUS LIKE 'テーブル名'\G
-------------------------------------------------
まだ Row_format は Compact のまま
今回は ROW_FORMAT を DYNAMIC にするので以下を実行
-------------------------------------------------
mysql> ALTER TABLE `テーブル名` ROW_FORMAT=DYNAMIC;
-------------------------------------------------
無事に変更されていることを確認する
-------------------------------------------------
use データベース名 ← データベースを選択
SHOW TABLE STATUS LIKE 'テーブル名'\G
-------------------------------------------------
カテゴリー:mysql
phpmyadminからデータベースをエクスポートしたらphpの実行時間オーバーでできなかった。
解決方法1
ターミナルでサーバーにログインしてダウンロードする
phpの実行時間オーバーなので php を使わずにエクスポートする。
////////////////////////////////////////
mysqldump -u root -p database_name > ダウンロード後のファイル名.sql
////////////////////////////////////////
上記は mysql はログインせずに実行する。ダウンロード先はカレントディレクトリになるので、不都合ならパスを指定する。
解決方法2
php の実行時間を延長させる。
カテゴリー:mysql
データベースの照合順序を変更する
---------------------------------------------------------
ALTER DATABASE データベース名 COLLATE utf8mb4_general_ci
---------------------------------------------------------
テーブルの照合順序を変更する
---------------------------------------------------------
ALTER TABLE テーブル名 COLLATE utf8mb4_general_ci
---------------------------------------------------------
カテゴリー:mysql
さくらVPSで外部ホストからmysqlに接続するには、接続を許可するユーザーを作ればいい。
参考サイト
MySQLに外部ホストから接続できるように設定する
接続を許可するユーザーを作るSQL
-------------------------------------------------
grant all privileges on 接続を許可するDB名.* to new_user_name@"接続元のホスト" identified by 'password' with grant option;
-------------------------------------------------
grant → 付与。許諾する。mysqlで権限を付与する命令。
all privileges → 全ての権限を与える。
privileges → プリビレッジ。権限の意。
カテゴリー:mysql, unix, さくらインターネット
sourceを使ってsqlファイルをインポートするスクリプト
-------------------------------------------------
use データベース名;
source /var/www/html/file.sql;
-------------------------------------------------
カテゴリー:mysql
$get_datas['カラム名'];
↓↓↓
$get_datas[$culumn_name];
変数名をそのまま記述すればOK。可変変数は不要。
カテゴリー:mysql, PHP
KAGOYA のデータベースプラン(SSD 共有)の DB サーバーにアクセスする方法、覚書。
1.kagoya のサーバーコントロールにログインして、データベースをつくる。そのデータベースのアクセス許可にアクセス元の IPアドレス を登録する。自分の場合はさくら共有サーバーのIPアドレス。
2.ターミナルからさくらサーバーにアクセス。さくらサーバーからさくらの DB にアクセスするように kagoya の DB にアクセスする。
コマンド(さくらサーバーにログイン後)
----------------------------------------------------
% mysql -h mysql*****.kagoya.net -u ユーザーID -p --default-character-set=utf8
----------------------------------------------------
以後、さくらの DB を使っているのと同じように kagoya の DB を使用できる。
カテゴリー:mysql, さくらインターネット