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 で実行されます。同じネットワークではないため、データベース接続にはインターネットが使用されます。どこかのデータが失われます...