0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MariaDB: リストア時に Table 'user' already exists エラー

0
Posted at

mariadb

環境

  • Ubuntu26.04 LTS
  • 11.8.6-MariaDB-5ubuntu0.1

リストアでエラー

かなり古いバージョンのMysqlでダンプを取ったものからリストア。
いつもこれでうまく動いているのだけれど

$ sudo mysql -u root -p < 2026103103dump.sql 

あれ?

--------------
CREATE TABLE `user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
  `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
.
.
.
  PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
--------------

ERROR 1050 (42S01) at line 2551: Table 'user' already exists

エラーが出ました。

一般的には以下のようにすればよいということらしいのですが

MariaDB [(none)]> DROP TABLE IF EXISTS user; 
ERROR 1046 (3D000): No database selected

うーん? もうちょっと慎重にしてみます。

「MySQLのdumpをレストアする際に "ERROR 1050 (42S01) at line 1596: Table 'user' already exists" と出てきてしまうときの対処法」
https://qiita.com/r3n/items/9899a3a863c2554558d0

を基に、以下のようにして対応しました。

$ vim 20261031dump.sql 

として、冒頭に以下を追加します。

DROP TABLE IF EXISTS `mysql`.`global_priv`;
DROP VIEW IF EXISTS `mysql`.`user`;

再度試します。

$ sudo mysql -u root -p < 20261031dump.sql 

うまくいきました。

先のQiita記事によると、以下のようなことが原因らしいです。

これはmysql.userテーブルがMariaDB 10.4でビューに変更されたことと関係があるようで
MDEV-22127 に具体的な問題・解決策についてのドキュメントがあります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?