43

mysqldumpインポート時にエラーが発生する不良が与えられた場合:

namtar backups # mysql -p < 2010-12-01.sql
Enter password: 
ERROR 1062 (23000) at line 8020: Duplicate entry 'l�he?' for key 'wrd_txt'

指定された行をスキップして続行するようにインポートに指示する簡単な方法はありますか?

(はい、ファイルを手動で編集したり、出力を解析したりできることはわかっていますが、あまり便利ではありません)

4

6 に答える 6

54

ダンプを再度作成できる場合は、ダンプ--insert-ignore時にコマンドラインに追加できます。

または、 mysqlimportコマンドを使用してみてください--force。これは、MySQL エラーが発生した場合でも続行されます。

于 2011-10-01T18:56:20.423 に答える
39

mysql -f -p < 2010-12-01.sql

-fここで有効なオプションである(力)は、私にとってはうまくいきました。

于 2012-04-05T13:35:32.743 に答える
2

他のオプションは確かに実行可能なオプションですが、別の解決策は.sqlmysqldump.

変化する:

INSERT INTO table_name ...

INSERT IGNORE INTO table_name ...
于 2017-03-17T14:01:31.097 に答える
1

ダンプの上部にある MySQL ディレクティブを削除しましたか? (sedコマンドですでに挿入したすべてのレコード/テーブルを削除した後に復元を再開したときに、意図せずにそうしました)。これらのディレクティブは、とりわけ、一意のテスト、外部キーのテストなどを実行しないように MySQL に指示します)

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
于 2013-03-06T13:33:13.843 に答える