20190502のMySQLに関する記事は4件です。

mySQLメモ

SQLをリポジトリに追加
sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

インストール
sudo yum install mysql-community-devel mysql-community-server

起動
sudo systemctl start mysqld

自動起動設定
sudo systemctl list-unit-files --type=service | grep mysqld

初期設定
sudo cat /var/log/mysqld.log | grep 'temporary password'

ログイン
mysql -u root -p

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[忘備録]laravel5.5 データベースjoin 結合

laravelを用いて初めてデータベースの結合をしてみると、想像以上に簡単だったので、忘備録として残しておこうと思う。

前提

データベースにlaravelデフォルトの users に加え、  id, uesr_id, text カラムを含む posts テーブルを用意する。

postsテーブルを作成する際はマイグレーションファイルで user_id カラムを次のように設定する。

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');

流れ

①モデル設定
②コントローラーから使う

①モデル設定

今回はユーザーが複数のpostを持つというで、以下のような関係になります。

user has many posts
posts belongs to user

この点を踏まえて、 User.php, Post.php に以下のコードを追記。

User.php
public function posts() {
        return $this->hasMany('App\Post');
    }
Post.php
public function user() {
        return $this->belongsTo('App\User');
    }

これで準備は整いました。

②コントローラーから使う

今回はコントローラーで確認用 unction join() という関数を作ります。

Post.php
function join() {
        #postsテーブルのuser_idが1のレコードを全て取得
        $user = User::find(1);
        $posts = $user->posts; 

        #postテーブルのデータを全て取得
        $posts = Post::all();

        #上記で取得した「postsテーブルのuser_idが1のレコード」をひとつずつ表示
        foreach ($posts as $post) {
            echo $post . "<br/>";
        }

        #上記で取得した「postテーブルのデータ」から結合されたユーザーの名前をひとつずつ表示する。
        foreach ($posts as $post) {
            echo $post->user->name . "<br/>";
        }

    }

これで、適当にルート設定をし、うまく表示されていることを確認することができました。

おかしな部分がある場合、指摘していただけるとありがたいです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

mysqlの文字コード変更(メモ)

覚え書です

mysqlの文字コードをlatin1からutf8に変更するために/etc/my.cnfをいじったら、なぜかmysql自体が起動しなくなったのでdb作成後に文字コードを変更することにした

初めは

mysql
ALTER DATABASE [ database ] CHARACTER SET [ character set ] COLLATE[ collations ];

で変更してたが

mysql
SET [ variable_name ] = [ character set ];

こっちの方がやり易い

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOSのターミナルでssh接続先(Ubuntu18)のMySQLで日本語を入力すると日本語が消える

TerminalでUbuntu18.04のサーバにssh接続して、mysqlを起動してvaluesに日本語を入力すると"mysql> "プロンプト画面で、日本語をタイプすると、未変換状態の時は表示るが、Enterキーで確定すると日本語が消える。文字化けでない。これを解決するのに役立った解決方法は以下のコードを/etc/mysql/my.cnfに入力して解決した。

[mysqld]
character-set-server = utf8

[mysqldump]
default-character-set = utf8
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む