🔥

MariaDBの操作備忘録

に公開

仕事でMariaDBをよく触る機会があるので、よく使うコマンドや、忘れがちなコマンドをまとめておく

TABLEの操作

テーブル作成

CREATE TABLE `table-name` (
  `id` INT (11),
  `name` VARCHAR (50),
)

テーブル名変更

RENAME TABLE `old-table-name` TO `new-table-name`;

primaryKeyやindexはそのまま引き継がれるので再設定不要

カラム編集

  • カラム追加
ALTER TABLE `table-name` ADD COLUMN `column-name` dataType 【etc】;
  • カラム変更 (カラム名・データ型)
ALTER TABLE `table-name` CHANGE COLUMN `old-column-name` `new-colum-name` dataType 【etc】;
  • カラム編集 (データ型・その他)
ALTER TABLE `table-name` MODIFY COLUMN `column-name` dataType 【etc】;
  • カラム削除
ALTER TABLE `table-name` DROP COLUMN `column-name`;

コマンドライン

エラー

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled

MySQL や MariaDB でストアドファンクションを作成しようとしたときに出るエラー。

  • 原因: バイナリログ(log_bin)が有効になっている状態で、作成しようとしている関数に以下のいずれかの属性が指定されていない。
  • DETERMINISTIC(同じ入力に対して常に同じ出力を返す)
  • NO SQL(SQL文を含まない)
  • READS SQL DATA(SELECTなどの読み取りのみを行う)
対処方法
  • log_bin_trust_function_creators を有効にする(安全性低め)

これは「関数作成者を信用する」という設定で、属性がなくても関数作成を許可します。

SET GLOBAL log_bin_trust_function_creators = 1;

※この設定を反映させるには、SUPER 権限が必要です。また、永続化するには my.cnf に以下を追加:

[mysqld]
log_bin_trust_function_creators=1

インデックス作成

四捨五入
mysqlでは五捨六入になってしまうようだが、MariaDBでは四捨五入される

Discussion