毎日テキストマイニング

180日間、毎日テキストマイニングをするブログです

2018/6/30【番外編】MySqlの基礎を学ぶ2、Error Code: 1449 The user specified as a definerのエラーを解決させる

午前中からの続きです。

MySQLWorkbenchを起動できたら、左側のMANAGEMENTにあるServer Statusをクリックするとデータベースの状況がわかるとのことです。

とりあえず試しにデーターベースの一覧を取得してみます。

> SHOW DATABASES;

12:20:54 Get schemata    Error Code: 1449 The user specified as a definer ('mysql.infoschema'@'localhost') does not exist   

エラーが起こりますね。いい加減にして欲しい。。。 ローカルホストのUser'mysql.infoschema'が定義されていないとのこと。 このUserがいるのかどうか検索してみます。

> select user();
> SELECT host, user FROM mysql.user;

もちろんこんなユーザーいないですね。 このコマンドは使えたのですが、他のコマンドは全滅です。

グーグルで原因を探していたのですが、どうやらMySQL5.7から8にアップグレードされた時にユーザーの設定がうまくいってないようです(いったいいつアップグレードした)。

色々試してみましたが最終的にうまくいったのが以下のコマンド。

$ mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown = 1;
mysql> exit
$ mysql_upgrade -u root -p

これでやっと

SHOW DATABASES;

が使えました。引続き、SQLを勉強してしていきます。 f:id:rimt:20180630203049p:plain

SQLの構文

— hogehoge
/*
hoge
hoge
*/
  • 使うデータベースを選ぶ
USE test_db;

-テーブルの一覧をみる

SHOW TABLES;
  • テーブルの構造を確認する(カラムとかの確認)
DESC テーブル名;
  • データベースからデータを取得するコマンド
SELECT カラム名 FROM デーブル名;
  • カラムを複数指定する場合はコンマで区切る。
SELECT カラム名, カラム名 FROM デーブル名;

ここまでのコマンドを実際に実行するとなるとこんな感じですね。

use test;
SHOW TABLES;
DESC books;
SELECT title FROM books;

応用

取得した後にカラム名を変更させる -> asを使う

SELECT title as 件名 FROM books;

今あるカラムに演算を追加することができる。

SELECT title as 件名, price as 定価, price * 1.08 FROM books;

WHERE文

WHEREを付けることで条件を指定することができる。

SELECT title, price FROM books WHERE PRICE > 3000;

データベースを作る操作

  • データベースを作るコマンド
CREATE DATABASE データベース名;
  • テーブルを作るコマンド
CREATE TABLE テーブル名(カラム情報)
CREATE TABLE テーブル名(id int not null auto_increment primary key, user_name varchar(255) not null, ranking int)
  • テーブルにカラムを追加するコマンド
ALTER TABLE テーブル名 ADD カラム名 int AFTER id;

キリが無いのでデータベースの基礎はこの辺にして、いつもの分析をはじめていきます。