0

システムのパフォーマンスを最適化するために、いくつかの静的テーブルを RAM に保存しています (そのコピーはハード ドライブにも存在します -- MyISAM に)。さて、ご存知のように、サーバーが再起動すると、RAM 上のすべてのデータが削除されます。したがって、それを避けるために、4 つの SQL ステートメントを含む初期化ファイルを作成しました。

各 SQL ステートメントは個別の行にあり、セミコロン (;) で終了し、どこにもコメントがないことに注意してください --- 私の限られた知識から言えば、いくつかの基本的な間違いを避けることができたと思います。しかし、MySQL をテストするためにコマンド ラインから手動で再起動すると、メモリ テーブルが空であることがわかります。コマンドラインから initfile を手動で実行すると、データが問題なく入力されるため、initfile 自体に問題はありません。

これを解決するための助けをいただければ幸いです。

ありがとう!

ウダヤン

4

2 に答える 2

0

あなたのすべての提案に感謝しますが、私は問題が何であるかを理解しました.

  1. SQL ファイルでは、その init-file に入力する必要があるデータベースについて言及する必要がありました。

  2. SQL ステートメントの末尾にセミコロンがありました - どうやらそれは良い考えではありません。

これら 2 つの小さな変更を行うと、すべてが正常に機能するようになりました。

繰り返しますが、ポインタをありがとう!

ウダヤン

于 2012-08-09T05:19:34.423 に答える
0

何かがおかしい。

確認のために、/etc/init.d/mysql restart を使用してローカルの mysql サーバーを再起動してみました。そして、それはmysqlユーザー(ルートではない)によって実行されるように起動しました。

したがって、これを理解するには、次のことが必要になります。問題は、ファイルのアクセス許可が間違っているか、mysqld を実行しているユーザーがアクセスできない場所にあることであるとほぼ確信しているためです。

  • 実行している Linux のバージョンは何ですか?
  • インストールした mySQL のバージョンは何ですか?
  • my.cnf の右側のセクションに「init-file=」がありますか?
  • 'ps -ef | の出力は何ですか? grep mysqld'?
  • 「ls -lrt /tmp/initfile.sql」の出力は何ですか?
  • 「コマンド ラインから手動で initfile を実行すると、問題なくデータが読み込まれるため、initfile 自体に問題はありません」とはどういう意味ですか?

権限の問題だと思わざるを得ません。したがって、4 番目と 5 番目の回答は、私が最も興味を持っているものです。

これらすべての回答を質問に追加して、問題を解決するために必要なすべての情報を人々が入手できるようにする必要があります。

于 2012-08-07T13:27:19.117 に答える