create.sqlでエラーが発生する[CentOS7.6、MariaDB10.4.7、ZabbixServer4.0.11]

Zabbixを使ってみたい!と思って、家の仮想サーバにインストールしようと思いましたが、できません。
環境については、タイトルの通りです。

起きている事象としては
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

のコマンドで実行すると以下のエラーが出てきます。
ERROR 1452 (23000) at line 2172: Cannot add or update a child row:
a foreign key constraint fails (`zabbix`.`dchecks`, CONSTRAINT `c_dchecks_1` FOREIGN KEY (`druleid`) REFERENCES `drules` (`druleid`) ON DELETE CASCADE)

さらに不思議な事にcreate.sqlの2171行目で以下のSQLがあるにも関わらず、drulesテーブルの中身は空っぽでした。
INSERT INTO `drules` (`druleid`,`proxy_hostid`,`name`,`iprange`,`delay`,`status`) values ('2',NULL,'Local network','192.168.0.1-254','1h' ,'1');

エラーの起きた2172行目のSQL文は以下の通りになっており、2171行目のSQLがインサートされてない事で外部キー制約にひっかかったものと考えています。
INSERT INTO `dchecks` (`dcheckid`,`druleid`,`type`,`key_`,`snmp_community`,`ports`,`snmpv3_securityname`,`snmpv3_securitylevel`,`snmpv3_a uthpassphrase`,`snmpv3_privpassphrase`,`uniq`,`snmpv3_authprotocol`,`snmpv3_privprotocol`,`snmpv3_contextname`) values ('2','2','9','syst em.uname','','10050','','0','','','0','0','0','');

なお、こちらのSQL1行のみで実行するとテーブルに値は入ります。

INSERT文が適切に処理されてないせいで起きているのだろうということまではわかったのですが、
だからどうするというのがわかりません。こういった場合どうするべきでしょうか。

(ファイルを分割して、該当SQL箇所のみ手動で入れつつやっていくなんて方法もあるかもしれないですが、
(上記の状況からエラーが出ているところだけの対処で正しく作成されるのか疑問だけど…)
他に何か案があれば教えてほしいです。)

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

恐らく、MariaDB 10.4.7を使用されていることが原因だと思います。
とりあえず試されるということであれば、CentOS 7.6標準のmariadb
を使用してみてください。

ZBX-16465 : Not possible to insert create.sql.gz on MariaDB 10.3.17
https://support.zabbix.com/browse/ZBX-16465

ユーザー nozomu0321 の写真

TNK様

ご回答ありがとうございました。
MariaDBの問題ということですかね…。
上記リンクのエラーも出ており、こちらは対処済だったのですが…。
とりあえずMariaDB方面でも色々確認して、どうにもならなかったら
古いバージョン使います。
ありがとうございました。

ユーザー nozomu0321 の写真

勘違いがあったので訂正します。
2155行目にSTART TRANSACTION;
の記載があり、最初の質問の「insert分がうまくいかない。」
という言葉自体間違いはないのですが、
上記の該当行で失敗していたからロールバックされた動きでした。

最初はMariaDBの文字コードとかの設定がうまくいかなくて、
テーブルは作られてるのに、insert文がうまく挿入されてないのかと思ってた。
ちなみに2155行目以前に記載されてるinsert文についてはTABLEにちゃんと入ってましたし、
エラー行付近のSQLを1行のみ実行しても、TABLEに入るのは当然の動作でした。

今はまだ頭の中で多分そうだろうと思ってるだけの段階ですが、
SET FOREIGN_KEY_CHECKS=0;
のコマンドによって、トランザクション中の外部キー制約を無効化すれば良いと思ってます。

ユーザー TNK の写真

ZBX-16465に関しては、Zabbix 4.4で対応されるようです。
https://www.zabbix.com/rn/rn4.4.0rc1

ユーザー nozomu0321 の写真

情報ありがとうございます。
4.4に関して正式版もリリースされたようなので早速インストールしてみました。
なお、結果については変わりませんでした。
ちなみにSET FOREIGN_KEY_CHECKS=0;のオプションについても、
結局失敗したSQLのログが流れまくっただけとなりました。
とりあえず自環境だけで他の人は出てないということは、
やはりMariaDBの設定等の可能性が高いですし、
CentOS8もリリースされたので、クリーンインストールしたり試します。
重ね重ねありがとうございました。