ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp/SAE/データベース操作/D メソッドの質問

thinkphp/SAE/データベース操作/D メソッドの質問

WBOY
WBOYオリジナル
2016-06-23 14:23:181099ブラウズ

もともとローカル データベースに mesg テーブルがありましたが、後にフィールド メイドがこのテーブルの後ろに追加されました。
操作で使用されます
$mesg = D('Mesg');
dump($mesg);
モデルには次のものがあります:
protected $_map = array(
'user'=>'muser',
'content '=>'mcontent',
'time'=>'mtime',
'aid'=>'maid',
);

結果は次のようになります:
["fields:protected"] => ; 配列(8) {
[0] => 文字列(3) "中間"
[1] => 文字列(4) "ミューザー"
[ 3] => 文字列(8) "mcontent"
[4] => 文字列(5) "mtime"
[5] => 文字列(4) "メイド"//これ
["_autoinc" ] = > bool(true)
["_pk"] => string(3) "mid"
}

ローカルにメイドフィールドがあります。
ただし、sinaapp にアップロードする場合も同じ操作が実行されますが、結果は次のようになります:
["fields":protected] => array(7) {
[0] => string(3) "mid"
[ 1 ] => 文字列(4) "muid"
[2] => 文字列(5) "muser"
[3] => 文字列(8) "mcontent"
=> "mtime"
["_autoinc"] => bool(true)
["_pk"] => string(3) "mid"
}

以下はローカルと sae の両方で正常です :
["_map ":protected] => array(4) {
["user"] => string(5) "muser"
["content"] => string(8) "mcontent"
["time"] => string(5) "mtime"
["aid"] => string(4) "maid"
}
元々、上記のテーブルにはそのフィールドがありませんでしたが、後でこのフィールドが追加されました。 、すべてのテーブルを再度アップロードしましたが、うまくいきませんでした。
ランタイムを何度削除しても機能しません。原因がわかりません。


ディスカッションへの返信(解決策)

まず、sae側のテーブル構造が正常に変更されたことを確認します

saeモードでローカルデバッグが成功したら、プロジェクト全体を再送信します


まずテーブル構造が変更されていることを確認しますsae 側が正常に変更されました

sae モードでのデバッグが成功した後、プロジェクト全体を再送信します


sae テーブル構造が変更されました。
「Sae モードでのローカル デバッグが成功するのを待機しています」とはどういう意味ですか?

まず、Sae 側のテーブル構造が正常に変更されたことを確認します

SAE モードでローカル デバッグが成功したら、プロジェクト全体を再送信します


2 番目のバージョンを作成しました。次に、最初のバージョン全体をコピーすれば準備完了です。 !
ありがとう!
でも、何が原因なのか知りたいです。

マシンでのデバッグに sae を使用しませんでしたか?

通常のプロジェクトエントリーファイル
require './ThinkPHP/ThinkPHP.php';

SAE プロジェクトエントリーファイル
require './ThinkPHP/Extend/Engine/Sae.php';


まず、sae 上のテーブルを確認します。サイド 構造は正常に変更されました

sae モードでのローカル デバッグが成功したら、プロジェクト全体を再送信します


また、2 番目のバージョンを作成しない場合、最初のバージョン全体を再送信する方法についてお聞きしたいのですが?
再提出の方法がわかりません。

マシンでのデバッグに sae を使用しませんでしたか?

通常のプロジェクト エントリ ファイル
require './ThinkPHP/ThinkPHP.php';

SAE プロジェクト エントリ ファイル
require './ThinkPHP/Extend/Engine/Sae.php';
なるほど、これはわかりました

また、第 2 バージョンを作成しない場合、最初のバージョン全体を再提出するにはどうすればよいですか?
再提出の方法がわかりません。 SVNというソフトを使っていないのでしょうか?
プロジェクト ディレクトリを右クリック - 送信

5th Floor の返信からの引用:

また、お聞きしたいのですが、第 2 バージョンを作成したくない場合、最初のバージョン全体を再送信するにはどうすればよいですか?
再提出の方法がわかりません。
SVN ソフトウェアを使用しませんか?
プロジェクト ディレクトリを右クリック - 送信

送信後は効果がなく、同じ問題が依然として存在します。
しかし、バージョンを再作成したときに問題は解決されました。
理由はわかりません。

私もこの問題に遭遇しました。オンラインで検索したところ、KVDB キャッシュに問題があることがわかりました。次に、KVDB を無効にして再度有効にしましたが、問題は依然として発生しました。いろいろ悩んだ結果、KVDBを無効にしてもキャッシュはクリアされないことが分かりました。無効にする際にメッセージは出ましたが、少なくとも私のキャッシュはクリアされなかったので、理由は気にしません。
次のコードを使用して、KVDB のキャッシュ コンテンツを表示できます
[code]$kv = new SaeKV();
$ret = $kv->pkrget; ('', 100);
dump($ret);
[/code]

KVDB を無効にして再度有効にしても、上記のコードを実行してもキャッシュの内容が出力される場合は、KVDB キャッシュがまだ存在していることを意味します。 。
以下のコードをコピーして実行し、問題を解決します。
[コード] $kv = new SaeKV(); // SaeKV オブジェクトを作成します
$ret = $kv->init(); //初期化します
$ret = $kv->pkrget('', 100); // キャッシュされたコンテンツを取得します (ヘルプ ドキュメントには上限が 100 であると記載されています)
$this->show('

現在の KVDB キャッシュ コンテンツ

')
dump($ret);トラバースして削除
foreach ($ret as $key => $value) {
$ret = $kv->delete($key) }
$this->show('
' ) ;
$this->show('

KVDB キャッシュの内容をクリア

');
$ret = $kv->pkrget('', 100); ;
if (!$ret){
$this->show('
');
[/code]

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。