114 件中 61 - 70 件を表示
« 前の 10 件 | 次の 10 件 »
Displaying posts with tag: 8.0 (reset)
MySQL 8.0.13の式インデックス

嬉し楽しい式インデックス。
PostgreSQLのこれが結構うらやましかった機能がついにMySQLにも! The MySQL 8.0.13 Maintenance Release is Generally Available | MySQL Server Blog MySQL 5.7からgenerated columnが入ってそのカラムにインデックスを張ればそれっぽい高速化は実現できたんだけれども、generated columnは如何せんORMと相性が悪いことがあって(ORMはそのカラムがgeneratedかbasicか特に気にしてくれないけど、generatedなカラムは更新しようとするとエラーになる、など)そういうケースではカラムを定義せずに式インデックスが使えるといいのに…と思っていたのでしたん。

[さらに読む]
MySQL 8.0.13でカラム定義のDEFAULTに関数が指定できるようになった

みんなだいすき DEFAULT がついに関数を指定できるようになった。
8.0.12とそれ以前はリテラルのみが指定可能、例外として TIMESTAMP, DATETIME 型の CURRENT_TIMESTAMP のみだった。 Handling of Explicit Defaults as of MySQL 8.0.13 記法は .. DEFAULT ( expression ) で、 DEFAULT のあとに括弧を入れてから関数なり表現なりを書く。
The MySQL 8.0.13 Maintenance Release is Generally Available | MySQL Server Blog に書いてある↓をそのまま試そうとしても、括弧が抜けているので通らない。。

mysql80 40> CREATE TABLE t2 …
[さらに読む]
utf8mb4_0900_ai_ciは "=" と "≠" を同じ文字だと思っている

TL;DR

MySQL 8.0の utf8mb4 のデフォルト照合順序として utf8mb4_0900_ai_ci というのがあって( default_collation_for_utf8mb4 で多少は変えられる)、これは kamipoのハハ=パパ問題 を引き起こす照合順序として日本人には知られている(と思う。といいな。広まれ!) で、その utf8mb4_0900_ai_ci

[さらに読む]
MySQL 8.0.13とそれ以降で「パスワード変更の際に今のパスワードを入力させる」オプション

TL;DR

  • ドキュメントの password_require_current だけ読むとちょっと足りなくて、実際にはこんな判定
if (mysqlスキーマへのUPDATE権限 || CREATE USER権限)
return パスワード確認不要;
else
{
if (global.password_require_currentがON || そのアカウントが mysql.user.Password_require_current = 'Y' になっている)
return パスワード確認必要;
else
return パスワード確認不要;
}
  • パスワード確認必要な場合、パスワードを変えるようなステートメントの最後に REPLACE '元のパスワード' をつける
    • 対話的に聞かれるわけではない
    • REPLACE
[さらに読む]
MySQL 8.0.13の新機能でPRIMARY KEYのないテーブルを作成させない

TL;DR

  • sql_require_primary_key サーバー変数をONにすると、PRIMARY KEYのないテーブルを作ろうとした時にエラーにできる。
    • セッションスコープとグローバルスコープと両方あるやつで、実効値はセッションスコープなので注意。
    • ただし、 SET SESSION .. でも一般ユーザーでは値を変更することはできない( sql_log_bin とかもそうですね)
  • 超便利だ!! 秘伝のタレに入れる時は loose プレフィックスとかもいいと思うよ!!

取り敢えず基本的な使い方として、0(OFF)と1(ON)の時の動作の違い。

mysql80 9> SELECT …
[さらに読む]
MySQL 8.0ではカラムのリネームに ALTER TABLE RENAME COLUMN 構文が使える

TL;DR

[さらに読む]
innodb_ft_enable_stopword が無効にできなかったはなし

TL;DR

  • innodb_ft_enable_stopword は2018/08/22現在ドキュメントの記載が “GLOBAL” のみになっているけど、実際は “GLOBAL, SESSION” で実効値はセッション側
  • このパラメーターでストップワードを判定させるか否かは CREATE TABLE または ALTER TABLE した時点の session.innodb_ft_enable_stopword に依存する

元ネタはMySQL CasualのSlackでのこの発言。 (文中の引用元リンクがたどれない方は是非とも …

[さらに読む]
MySQL 8.0でLOAD DATA LOCAL INFILEが "ERROR 1148 (42000): The used command is not allowed with this MySQL version" で失敗する時

TL;DR

吊るしのMySQL 8.0で mysql コマンドラインクライアントから LOAD DATA LOCAL INFILE を実行すると転けます。

mysql80 125> LOAD DATA LOCAL INFILE '/tmp/aaa' INTO TABLE t1;
ERROR 1148 (42000): The used command is not allowed with this MySQL version

LODA DATA LOCAL …

[さらに読む]
CREATE USER .. DEFAULT ROLE .. で指定すると一発でROLEも許可される

TL;DR

mysql> CREATE USER hoge@xxx.xxx.xxx.xxx IDENTIFIED BY 'password';
mysql> GRANT hoge_role TO hoge@xxx.xxx.xxx.xxx;
mysql> ALTER USER hoge@xxx.xxx.xxx.xxx DEFAULT ROLE hoge_role;

mysql> CREATE USER hoge@xxx.xxx.xxx.xxx IDENTIFIED BY 'password' DEFAULT ROLE hoge_role;

は同じ状態になる。
当たり前といえば当たり前なんだけど、ちょっと感動したのでメモ。 MySQL 8.0で追加されたROLEの話は↓の記事。 日々の覚書: MySQL 8.0.0で追加されたROLEの仕組み ロールを作ってから

  1. ユーザー作る
  2. ロールを許可する
  3. デフォルトロール設定する
    でやらないといけないのかなと思ってたら一発で指定できた。

[さらに読む]
MySQL ShellのUpgrade CheckerをPerl 5に書き下してみたけどそんなことする必要はなかったようだ

TL;DR

  • lefredMySQL Server Team もすなる checkForServerUpgrade といふものを、yoku0825もしてみむとしてするなり。
  • オリジナルはMySQL Shellのjsモードで使うものらしく、 X Pluginをインストールしなければいけない X PluginなしのClassic Protocol + jsモードでもイケた 。これを書いている最中に気が付いた…。
  • それもアレだし、どんなことをチェックして良し悪しを判断してるのかも気になったのでPerl 5で書き下してみたのがこちら。
[さらに読む]
114 件中 61 - 70 件を表示
« 前の 10 件 | 次の 10 件 »