2

dbに挿入したいテーブルの最後にこのコードがあることがわかります:

/*!40000 ALTER TABLE `to_import` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

phpMyAdminでクエリを実行しようとすると、取得#1231 - Variable 'sql_mode' can't be set to the value of 'NULL'して理由がわかりません。

だから、私はそれを削除でき/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;ますか?それはとても重要ですか?これについて学ぼうとしましたが、実際、私はそれが何をするのか理解していません。

4

1 に答える 1

3

おそらくSET @OLD_SQL_MODE = @@sql_mode; SET SQL_MODE='something'、テーブルの定義の上にあります。どうやらあなたはコピーしたSQLにそれを含めるのを忘れていたようです。

エクスポートツールでは、ALTER TABLEを特定のSQLモードで実行する必要があり、ALTERTABLEの前にそれを設定します。後で以前の値にリセットするために、現在の値を@OLD_SQL_MODEという変数に格納します。この行の目的は、SQL_MODEを以前の状態にリセットすることです。

したがって、テーブル定義の上にSETと下にSETの両方があるか、どちらも必要ありません。

于 2011-04-26T10:32:45.410 に答える