ローカル(Intel Mac)にMroongaを使用した開発環境を用意したい

前回↓までの内容で、一応全文検索を無理くり実装できそうな目処はたったと思っている。が、当然VPS上で開発するわけにはいかないのでローカルに開発環境を作りたい。

ところで、当該のWEBサービスは現状中古iMacにMAMPを導入してテキストエディタで生のコードを書くだけの貧弱な環境で開発されており、またgit等の世代管理システムも導入されておらず、とにかく問題の多い現場だが、僕にそっち方面の知識がないし、かつ僕以外の人間は動的ページと静的ページの区別もつかない門外漢なので、今はなんとかこれでやっていくしかない。

という愚痴はいいとして、MAMPでMroongaを組み込みたいと思ってググってみると、信じられないくらい情報が見つからない。というか皆無に近い。自力で導入するのは無理なのでこれは早々に諦めた。

Homebrewを導入

で手探りでネットサーフィンをしていると、MAMPを使わずにHomebrewというもの(パッケージ管理ソフト?)を使ってApache・PHP・MariaDBをインストールすればいけそうな気がしたので試した。

なんとなく干渉しそうだったので、まずはMAMPとMAMP PROをアンインストール。

そしてHomebrewを導入。

% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

以降は以下のページを参考にさせてもらって進めた。

% brew -v
Homebrew 3.3.9
Homebrew/homebrew-core (git revision 458f524cac9; last commit 2022-01-04)
Homebrew/homebrew-cask (git revision 22f40690a8; last commit 2022-01-04)

これでたぶんインストールできた。

Apache導入

次はApacheを導入だが、その前にOpenLDAPとlibiconvが必要だと書いてあったので入れた。

% brew install openldap libiconv

干渉を防ぐために?Macに最初から入っているApacheを落として自動で再起動しないようにしてやる必要があるようだ。

% sudo apachectl stop
% sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

やった。次はApache本体。

% brew install httpd

問題なく完了。これで、http://localhost:8080 にアクセスすると「It works!」が表示され、一安心。かと思ったが……。

/usr/local/etc/httpd/httpd.conf をいじって

#Listen 8080
 Listen 80

として http://localhost で開発サイトにアクセスできるようにしたが、これが動かない。404 Not Found が出てしまう。試しに、

 Listen 8888

としてみたところ、http://localhost:8888 ではちゃんと「It works!」してくれた。80番ポートだけが404になる。なぜ? 他の場所にも httpd.conf があって干渉してるのか?とか、MAMPの残滓が悪さしてるのか?とか、半狂乱であちこち探し回ったりstopとstartを繰り返したりしたが、僕のスキルでは解決できず。sudoをつけないで brew services restart httpd すると80番でApacheが動かない、というような情報も見かけたが、sudoしてもだめだった。

実はここまでの間に、よくわかりもしないコマンドをコピペで打ちまくっていて、なんか重要そうなファイルも消してしまったりしていた。なのでもう諦めて、一旦PCを初期化して最初からやり直そうと覚悟を決めた。作業中の重要なファイルをクラウドに逃し、まずはOSを再起動。さて再インストールするか、と思ったら、ブラウザに何故か「It works!」の文字が。

何度見返しても確かに http://localhost/  で「It works!」してる。なんで??????? わからない。何もわからない。サーバー関係はほんとに闇が深い。習得できる気がしない。原因はさっぱりわからないが解決してしまったので、とりあえずこのまま行く。

PHPをインストール

次はPHPをインストール。

% php -v

してみると、MacOSに入ってるphp7.3が出てくる。

WARNING: PHP is not recommended
PHP is included in macOS for compatibility with legacy software.
Future versions of macOS will not include PHP.
PHP 7.3.24-(to be removed in future macOS) (cli) (built: Jun 17 2021 21:41:15) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.24, Copyright (c) 1998-2018 Zend Technologies

非推奨とかなんとか言われてるが、どうせこのあとhomebrewで別のを入れるので気にしない。

% brew install php@7.4
% export PATH="/usr/local/opt/php@7.4/bin:$PATH"
% export PATH="/usr/local/opt/php@7.4/sbin:$PATH"

インストールしてパスを通してやると、

PHP 7.4.27 (cli) (built: Dec 16 2021 18:14:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.27, Copyright (c), by Zend Technologies

ちゃんと新しいのが出た。Apacheにこっちを使ってもらうために、
/usr/local/etc/httpd/httpd.conf
を再度修正。

LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so

phpのディレクトリインデックスも設定。

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

そしてドキュメントルートに index.php を置いてやると

<?php

echo "ハローワーク";

?>

ちゃんとハローワークが表示されました。これでphpは使える、と。

mariaDB

お次はmariaDB。

% brew install mariadb
% brew services start mariadb

さらに初期設定。

% sudo /usr/local/bin/mysql_secure_installation
Enter current password for root (enter for none)
//→ enter
Enable unix_socket authentication? [Y/n]
//→ n
Set root password? [Y/n]
//→ y

と進めていきます。
……が!
設定したいパスワードを入力したところで、

ERROR 1146 (42S02) at line 1: Table 'mysql.global_priv' doesn't exist
Password update failed!
Cleaning up...

と、エラーが出て勝手にお掃除を始めてしまった。
「mysql.global_priv」というテーブルが存在してないと怒ってるようです。
調べたがこれもよくわからん。なければ作ればいいのでは?と思うのだがだめらしい。

% ls /usr/local/var/mysql/mysql/

columns_priv.MYD		general_log.CSM			innodb_table_stats.frm		proxies_priv.frm		tables_priv.MYI
columns_priv.MYI		general_log.CSV			innodb_table_stats.ibd		server_cost.frm			tables_priv.frm
columns_priv.frm		general_log.frm			ndb_binlog_index.MYD		server_cost.ibd			time_zone.frm
db.MYD				gtid_executed.frm		ndb_binlog_index.MYI		servers.frm			time_zone.ibd
db.MYI				gtid_executed.ibd		ndb_binlog_index.frm		servers.ibd			time_zone_leap_second.frm
db.frm				help_category.frm		plugin.frm			slave_master_info.frm		time_zone_leap_second.ibd
db.opt				help_category.ibd		plugin.ibd			slave_master_info.ibd		time_zone_name.frm
engine_cost.frm			help_keyword.frm		proc.MYD			slave_relay_log_info.frm	time_zone_name.ibd
engine_cost.ibd			help_keyword.ibd		proc.MYI			slave_relay_log_info.ibd	time_zone_transition.frm
event.MYD			help_relation.frm		proc.frm			slave_worker_info.frm		time_zone_transition.ibd
event.MYI			help_relation.ibd		procs_priv.MYD			slave_worker_info.ibd		time_zone_transition_type.frm
event.frm			help_topic.frm			procs_priv.MYI			slow_log.CSM			time_zone_transition_type.ibd
func.MYD			help_topic.ibd			procs_priv.frm			slow_log.CSV			user.MYD
func.MYI			innodb_index_stats.frm		proxies_priv.MYD		slow_log.frm			user.MYI
func.frm			innodb_index_stats.ibd		proxies_priv.MYI		tables_priv.MYD			user.frm

調べてみるとまあ確かに存在しない。
MacOSの話じゃないけどこちらのページに似たような話が載ってたので目を通したところ、一度MariDBをアンインストールして上記のフォルダを削除し、もう一度インストールし直すと「mysql.global_priv」が作成されたらしい。これをやってみる。

% brew uninstall mariaDB

としても、/usr/local/var/mysql/mysql/は存在している。ということは、過去のMySQLインストール時に作られたファイルが残っていて干渉していたのか? このフォルダを削除して、もう一度mariaDBをインストールしてみる。

が、失敗。また違うエラーが出てる。


Warning: The post-install step did not complete successfully
You can try again using:
  brew postinstall mariadb
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

これも、別のインストールで作られた「/usr/local/etc/my.cnf」が邪魔をしているかもしれないということで同根の問題か。これも削除してやり直してみる。my.cnfの他にmy.cnf.defaultとmy.cnf.default.defaultもあったのでまとめて掃除してやる(改名して退避)。で、まずは

brew postinstall mariadb

を試してみる。うまく行かない。そんなに簡単な話ではなかった……。もう一度アンインストールからやる。関連しそうなところを全部消しちゃう。

% brew remove mariadb
% rm -rf /usr/local/etc/my.cnf*
% rm -rf /usr/local/var/mysql

これでうまくいく?

% brew install mariadb

==> Downloading https://ghcr.io/v2/homebrew/core/mariadb/manifests/10.6.4
Already downloaded: /Users/kojima/Library/Caches/Homebrew/downloads/bd7a1ecf2f1d64a655dc2f802451f80b56f655802849b44546931d89e6b7475f--mariadb-10.6.4.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/mariadb/blobs/sha256:618039a83fbea4ad919c9062482793ae70103402644fe6466e868209149ce235
Already downloaded: /Users/kojima/Library/Caches/Homebrew/downloads/5fc297b88528bedb08253eb9201d9c36bc3d913720ace6eaa764618aad3ba495--mariadb--10.6.4.big_sur.bottle.tar.gz
==> Pouring mariadb--10.6.4.big_sur.bottle.tar.gz
==> /usr/local/Cellar/mariadb/10.6.4/bin/mysql_install_db --verbose --user=kojima --basedir=/usr/local/Cellar/mariadb/10.6.4 --datadir=/usr/local/var/mysql --tmpdir=/tmp
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

MySQL is configured to only allow connections from localhost by default

To restart mariadb after an upgrade:
  brew services restart mariadb
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mariadb/bin/mysqld_safe --datadir /usr/local/var/mysql
==> Summary
🍺  /usr/local/Cellar/mariadb/10.6.4: 903 files, 183MB
==> Running `brew cleanup mariadb`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

この表示が成功なのか失敗なのかもよくわかんない。
が、エラーは出てない。初期設定のダイアログに再び挑むと……。

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

今度は最後までエラーなく進行!mariaDBのインストールはなんとか完了しました。詳しい人なら10分でできることなんだろうけどここまで丸一日かかっています。ありがとうございました。

Mroongaを使えるように

違う。ここからが本題だった。
Mroonga を導入したいんだった(準備に手間取りすぎて忘れかけていた)。

show engines;

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                                         | Transactions | XA   | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | Stores tables as CSV files                                                                      | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                                           | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                                       | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO           | NO   | NO         |
| MyISAM             | YES     | Non-transactional engine with good performance and small data footprint                         | NO           | NO   | NO         |
| SEQUENCE           | YES     | Generated tables filled with sequential values                                                  | YES          | NO   | YES        |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables                | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                                              | NO           | NO   | NO         |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

現状Mroongaは見えないが……。

INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';

としてMroongaプラグインを有効化してやると……

show engines;

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                                         | Transactions | XA   | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | Stores tables as CSV files                                                                      | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                                           | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                                       | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO           | NO   | NO         |
| MyISAM             | YES     | Non-transactional engine with good performance and small data footprint                         | NO           | NO   | NO         |
| SEQUENCE           | YES     | Generated tables filled with sequential values                                                  | YES          | NO   | YES        |
| Mroonga            | YES     | CJK-ready fulltext search, column store                                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                                              | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables                | YES          | YES  | YES        |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

できた!

これでローカルでもMroongaによる全文検索を使ったシステムの開発が進められるようになった。はず……。

ただ、

show variables like 'mroonga_version';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| mroonga_version | 7.07  |
+-----------------+-------+

とバージョンが古いようなので、これをアップデートしたいがどうしても方法が見つからない。mariaDBは10.06になっている。
Mroonga公式の Homebrew を使ったインストールをやり直せばそれでいいのかな?と思ったけど、

/Library/Developer/CommandLineTools/usr/bin/ranlib: file: librocksdblib.a(db_impl_debug.cc.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: librocksdblib.a(sync_point_impl.cc.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: librocksdblib.a(block_cache_trace_analyzer.cc.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: librocksdblib.a(trace_analyzer_tool.cc.o) has no symbols
/usr/bin/ranlib librocksdblib.a
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: librocksdblib.a(db_impl_debug.cc.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: librocksdblib.a(sync_point_impl.cc.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: librocksdblib.a(block_cache_trace_analyzer.cc.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: librocksdblib.a(trace_analyzer_tool.cc.o) has no symbols
[ 28%] Built target rocksdblib
make: *** [all] Error 2

ログがこういう感じになって途中で止まってしまう。これは完全にお手上げ。解読する力が僕にはない。とりあえず7.07でやっていくしかないか。詳しい方いたら何が悪いか教えて下さい……。

追記

PHPのバージョン変更

本番環境をPHP8にしようと思っていたことを思い出して、それも修正した。

% brew install php@8.0 
% export PATH="/usr/local/opt/php@8.0/bin:$PATH"
% export PATH="/usr/local/opt/php@8.0/sbin:$PATH"

% php -v
PHP 8.0.14 (cli) (built: Dec 17 2021 22:29:11) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.14, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies

で、/usr/local/etc/httpd/httpd.confも修正。

#LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
LoadModule php_module /usr/local/opt/php@8.0/lib/httpd/modules/libphp8.so

ちゃんと動いたのでこれでいいはず……。

phpMyAdminを入れる

こちらも忘れていたので入れておく。

$ brew install phpmyadmin

出てきたメッセージどおりに、/usr/local/etc/httpd/httpd.confに以下の内容を追加。

    Alias /phpmyadmin /usr/local/share/phpmyadmin
    <Directory /usr/local/share/phpmyadmin/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        <IfModule mod_authz_core.c>
            Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
            Order allow,deny
            Allow from all
        </IfModule>
    </Directory>

で、またOS再起動したりsudoでHTTPD再起動したりして、なんとかphpMyAdminの画面は出るようになったが、

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。
代わりにデータベースの操作タブを使って設定することもできます。

とか

設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。

とかが出ている。これを解消したい。上のやつはなんかリンクをクリックしていってテーブル「phpmyadmin」を作成したら消え去った。

下のやつも、config.inc.phpに

$cfg['blowfish_secret'] = 'mojamojamojamojamojamojamojamojamojamojamoja';

と適当な文字列を入れてやったら消えた。
また、my.cnf に

default_authentication_plugin=mysql_native_password

を追加してやるとエラーを防げる的なことがとこちらに書いてあったので追加。

これでだいたい開発環境が整ったかな?
Mroongaのバージョンが古い問題が残ってて、どうしても気になってしまうが、時間がないのでこれで行くしかないか……。

こういうのを解決できるようになるには何を勉強すればいいんだろう?それがまずわからない。つらい。

追記2

もうだめです

その後、VPS上ではできていた

CREATE TABLE questions4 (
 id INT PRIMARY KEY AUTO_INCREMENT ,
 content VARCHAR(255),
 FULLTEXT INDEX (content) COMMENT 'tokenizer "TokenMecab(\'use_reading\',true)",
 normalizer "NormalizerAuto"'
)Engine=Mroonga DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

こういう「TokenMecab(\'use_reading\',true)」の指定がinvalidと言われてしまい読みがな検索が使えず、これだと意味がないので再度すべてを見直し。

Mroongaのバージョンが古いのが原因かも、と思ったりもしたけどアップデートの仕方がどうしてもわからない。

ではmariaDBに組み込まれてるやつじゃなくて Mroonga公式のインストール方法として用意されている Homebrew を使ったやり方ではどうだろうか。
でもどうやらこれはmariaDBとMroongaを同時にインストールするものらしいので、思い切って一度Homebrewごとアンインストールし、HomebrewからApacheだけインストールした上で同じく HomebrewからMroongaをインストール……したかったのだけど失敗してしまう。

その過程でmariaDBはインストールされているが、

show engines;

してみるとこんな感じ。

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                                         | Transactions | XA   | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | Stores tables as CSV files                                                                      | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                                           | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                                       | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO           | NO   | NO         |
| MyISAM             | YES     | Non-transactional engine with good performance and small data footprint                         | NO           | NO   | NO         |
| SEQUENCE           | YES     | Generated tables filled with sequential values                                                  | YES          | NO   | YES        |
| Mroonga            | NO      | CJK-ready fulltext search, column store                                                         | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                                              | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables                | YES          | YES  | YES        |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

枠を作ってインストールしようとしたけど失敗して空っぽって感じなのかな?全然わからん。解読不能。

show plugins;

すると、

+-------------------------------+----------+--------------------+---------------+---------+
| Name                          | Status   | Type               | Library       | License |
+-------------------------------+----------+--------------------+---------------+---------+
| binlog                        | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| mysql_native_password         | ACTIVE   | AUTHENTICATION     | NULL          | GPL     |
| mysql_old_password            | ACTIVE   | AUTHENTICATION     | NULL          | GPL     |
| CSV                           | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| MEMORY                        | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| Aria                          | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| MyISAM                        | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| MRG_MyISAM                    | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| SPATIAL_REF_SYS               | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| GEOMETRY_COLUMNS              | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| inet6                         | ACTIVE   | DATA TYPE          | NULL          | GPL     |
| inet_aton                     | ACTIVE   | FUNCTION           | NULL          | GPL     |
| inet_ntoa                     | ACTIVE   | FUNCTION           | NULL          | GPL     |
| inet6_aton                    | ACTIVE   | FUNCTION           | NULL          | GPL     |
| inet6_ntoa                    | ACTIVE   | FUNCTION           | NULL          | GPL     |
| is_ipv4                       | ACTIVE   | FUNCTION           | NULL          | GPL     |
| is_ipv6                       | ACTIVE   | FUNCTION           | NULL          | GPL     |
| is_ipv4_compat                | ACTIVE   | FUNCTION           | NULL          | GPL     |
| is_ipv4_mapped                | ACTIVE   | FUNCTION           | NULL          | GPL     |
| CLIENT_STATISTICS             | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INDEX_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| TABLE_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| USER_STATISTICS               | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| wsrep                         | ACTIVE   | REPLICATION        | NULL          | GPL     |
| SQL_SEQUENCE                  | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| InnoDB                        | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| INNODB_TRX                    | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_LOCKS                  | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_LOCK_WAITS             | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_CMP                    | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_CMP_RESET              | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_CMPMEM                 | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_CMPMEM_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_CMP_PER_INDEX          | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_CMP_PER_INDEX_RESET    | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_BUFFER_PAGE            | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_BUFFER_PAGE_LRU        | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_BUFFER_POOL_STATS      | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_METRICS                | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_FT_DEFAULT_STOPWORD    | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_FT_DELETED             | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_FT_BEING_DELETED       | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_FT_CONFIG              | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_FT_INDEX_CACHE         | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_FT_INDEX_TABLE         | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_TABLES             | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_TABLESTATS         | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_INDEXES            | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_COLUMNS            | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_FIELDS             | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_FOREIGN            | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_FOREIGN_COLS       | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_TABLESPACES        | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_SYS_VIRTUAL            | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| INNODB_TABLESPACES_ENCRYPTION | ACTIVE   | INFORMATION SCHEMA | NULL          | BSD     |
| PERFORMANCE_SCHEMA            | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| SEQUENCE                      | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| unix_socket                   | ACTIVE   | AUTHENTICATION     | NULL          | GPL     |
| FEEDBACK                      | DISABLED | INFORMATION SCHEMA | NULL          | GPL     |
| user_variables                | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| THREAD_POOL_GROUPS            | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| THREAD_POOL_QUEUES            | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| THREAD_POOL_STATS             | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| THREAD_POOL_WAITS             | ACTIVE   | INFORMATION SCHEMA | NULL          | GPL     |
| partition                     | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
| Mroonga                       | DELETED  | STORAGE ENGINE     | ha_mroonga.so | GPL     |
+-------------------------------+----------+--------------------+---------------+---------+

もうだめだ。思いつくことはだいたいやったけど理解度が低すぎて、どうにもならない。

あっちもこっちもモグラ叩きのように次から次へと問題が出てきて学習の取っ掛かりもつかめない。

正直言って希死念慮が絶えず浮かんでいます。お金で解決できるならしたいけど、誰にも相談できないんだよな。

諦めてVPS上にファイルをUPしながら開発するしかないのかなあ。はあ。死にたい。

追記3

なんとかなった

その後、OSごとPCを初期化したりgithubコミュニティに頼ったりして、過去にぐちゃぐちゃいじった設定ファイルをまっさらにし、なおかつ最新版をbrew installしたところ、ようやくローカルにphp8、apache2、phpMyAdmin、MySQL8、そしてMroongaを合わせた開発環境を整えることができた。完全に行き詰まってたのだけど勇気を出して公式やアクティブなコミュニティに相談してみるとやはり動きがあったので選択肢として肝に銘じておこう。

MySQLにおけるユーザー定義関数の追加について

今回インストールしたMroongaでは、デフォルトで「mroonga_query_expand」というユーザー定義関数が使用できるようになっていなかった。インストール方法によっては同時に設定されることもあるようだが、今回は以下のようにして追加した。φ(..)メモメモ

CREATE FUNCTION mroonga_query_expand RETURNS STRING SONAME 'ha_mroonga.so';


娘にプリキュアの光るパジャマを買ってあげたいのでサポートお願いします!