2000 のクライアント レコードをループ処理し、それらを別のデータベースにコピーするスクリプトがあります。完全に実行される場合もあれば、PHP で送信されたクエリに対応しないメッセージを含む mysql エラーが返される場合もあります。エラーメッセージは次のとおりです ( PA K'2012-12-04 11:05:09' ) O DU LIC TE EY UPDA ):
[0] => 配列 (`ここにコードを入力` [レベル] => エラー [コード] => 1064 [メッセージ] => SQL 構文にエラーがあります。「PA K'2012-12-04 11:05:09」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 ) O DU LIC TE EY UPDA' 45 行目 )
エラーが発生したときに PHP で出力されたクエリ:
に挿入 「クライアント」 ( `klantId`、 「なーむ」、 `アドレス`、 `郵便番号`、 「プラッツ」、 「テレフーン」、 「モービル」、 「ファックス」、 「メール」、 `ウェブサイト`、 `post_address`、 `post_postcode`、 `post_plaats`、 `kvknummer`、 `btwnummer`、 `rekeningnr`、 `postbanknr`, 「メーリング」、 「作成された」、 「変更された」 )値 ( 1134年、 「ナーム」、 'アドレス 9L', '1234SG', 「プラッツ」、 ヌル、 ヌル、 ヌル、 ヌル、 'www.test.nl', ヌル、 ヌル、 ヌル、 ヌル、 ヌル、 ヌル、 ヌル、 1、 '2012-12-04 11:05:09', 「2012-12-04 11:05:09」 ) 重複キーの更新について `naam`=VALUES(`naam`), `アドレス`=VALUES(`アドレス`), `郵便番号`=VALUES(`郵便番号`), `plaats`=VALUES(`plaats`), `テレフーン`=VALUES(`テレフーン`), `mobiel`=VALUES(`mobiel`), `fax`=VALUES(`fax`), `email`=VALUES(`email`), `website`=VALUES(`website`), `post_adres`=VALUES(`post_adres`), `post_postcode`=VALUES(`post_postcode`), `post_plaats`=VALUES(`post_plaats`), `kvknummer`=VALUES(`kvknummer`), `btwnummer`=VALUES(`btwnummer`), `rekeningnr`=VALUES(`rekeningnr`), `postbanknr`=VALUES(`postbanknr`), `mailing`=VALUES(`mailing`), `created`=VALUES(`created`), `modified`=VALUES(`modified`) ;
私のスクリプトは会社でインターンを実行しており、データベースはデータセンターで extern を実行しています。スクリプトは 50% 正しく実行され、50% はエラーで実行されます...
前もって感謝します!!
ループ付きの追加スクリプト:
` $dbcon = getDbConnection(); $aClients = getClients(); // オブジェクトを返す foreach ($aClients AS $oClient) { $sQuery = ' INSERT INTO 「クライアント」 ( `klantId`、 「なーむ」、 `アドレス`、 `郵便番号`、 「プラッツ」、 「テレフーン」、 「モービル」、 「ファックス」、 「メール」、 `ウェブサイト`、 `post_address`、 `post_postcode`、 `post_plaats`、 `kvknummer`、 `btwnummer`、 `rekeningnr`、 `postbanknr`, 「メーリング」、 「作成された」、 「変更された」 )値 ( ' . $dbcon->real_escape_string($oClient->id) . '、 ' . $dbcon->real_escape_string($oClient->naam) . '、 ' . $dbcon->real_escape_string($oClient->adres) . '、 ' . $dbcon->real_escape_string($oClient->postcode) . '、 ' . $dbcon->real_escape_string($oClient->plaats) . '、 ' . $dbcon->real_escape_string($oClient->telefoonnummer) . '、 ' . $dbcon->real_escape_string($oClient->mobielnummer) . '、 ' . $dbcon->real_escape_string($oClient->faxnummer) . '、 ' . $dbcon->real_escape_string($oClient->emailaddress) . '、 ' . $dbcon->real_escape_string($oClient->website) . '、 ' . $dbcon->real_escape_string($oClient->afwijkend_adres) . '、 ' . $dbcon->real_escape_string($oClient->afwijkend_postcode) . '、 ' . $dbcon->real_escape_string($oClient->afwijkend_plaats) . '、 ' . $dbcon->real_escape_string($oClient->kvknummer) . '、 ' . $dbcon->real_escape_string($oClient->btwnummer) . '、 ' . $dbcon->real_escape_string($oClient->bankrekening) . '、 ' . $dbcon->real_escape_string($oClient->postbank) . '、 ' . $dbcon->real_escape_string($oClient->mailing == 'ja' ? 1 : 0) . '、 ' . $dbcon->real_escape_string($oClient->created) . '、 ' . $dbcon->real_escape_string($oClient->modified) . ' ) 重複キーの更新について `naam`=VALUES(`naam`), `アドレス`=VALUES(`アドレス`), `郵便番号`=VALUES(`郵便番号`), `plaats`=VALUES(`plaats`), `テレフーン`=VALUES(`テレフーン`), `mobiel`=VALUES(`mobiel`), `fax`=VALUES(`fax`), `email`=VALUES(`email`), `website`=VALUES(`website`), `post_adres`=VALUES(`post_adres`), `post_postcode`=VALUES(`post_postcode`), `post_plaats`=VALUES(`post_plaats`), `kvknummer`=VALUES(`kvknummer`), `btwnummer`=VALUES(`btwnummer`), `rekeningnr`=VALUES(`rekeningnr`), `postbanknr`=VALUES(`postbanknr`), `mailing`=VALUES(`mailing`), `created`=VALUES(`created`), `modified`=VALUES(`modified`) ;'; $dbcon->query($sQuery); }`
最終編集: データベース サーバーと同じサーバーでスクリプトを試しましたが、実行されません。それは一線を越えたどこかで起こります...
設定は次のとおりです。スクリプトはサーバー A で実行され、データベースはサーバー B で実行されます。同じネットワークではないため、データベース接続にはインターネットが使用されます。どこかのデータが失われます...