1

私は現在、ADODB ライブラリを使用する Web サイトに取り組んでいます。ウェブサイト全体で、すべてのクエリは大文字で書かれています。

問題は、テーブル名が大文字であるため、クエリを実行しても機能しないことです。しかし、テーブル名を小文字に変更すると機能します。

$sql = "SELECT * FROM MEMBERS where USERNAME = '$username'";

$db = ADONewConnection('mysql');
$db->debug = true;
$db->Connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_NAME);

$resultFriends = $db->Execute($sql);
    
while ($row = $resultFriends->FetchRow()) {
        var_dump($row);
        die;
}

これが私が得るエラーです:

ADOConnection._Execute(SELECT * FROM MEMBERS where USERNAME = 'fury', false) % 1012 行目、ファイル: adodb.inc.php

ADOConnection.Execute(SELECT * FROM MEMBERS where USERNAME = 'fury') % 15 行目、ファイル: index.php

スクリプトを変更したくないことに注意してください。1000 個のファイルと 10000 個の場所があります。

ライブラリはありますか、またはエラーなしでこのクエリを実行できる方法はありますか?

4

1 に答える 1

1

生きている種雄牛のバージョンは Linux カーネルでした。しかし、新しい開発サイトは ubuntu です。

ubuntu/mysql CML でこれを実行しましたが、うまくいきませんでした。

解決策は、AWS/rdbs で mySql データベースを再構成する必要があったことです。

DB インスタンスの「lower_case_table_names」パラメーターを変更する必要があります。今日まで、lower_case_table_names パラメーターは変更できず、システムの既定値はゼロ (0) または「テーブル名は指定どおりに保存され、比較では大文字と小文字が区別されます」でした。すぐに、0 と 1 の値が許可されます (テーブル名は小文字で格納され、比較では大文字と小文字が区別されません)。lower_case_table_names パラメータの詳細については、MySQL のドキュメントを参照してください。

lower_case_table_names パラメーターは、rds-modify-db-parameter-group API を介して指定できます。次の例のように、パラメーター名を含めて、目的の値を指定するだけです。

  rds-modify-db-parameter-group example --parameters "name=lower_case_table_names, value=1, method=pending-reboot" --region us-east-1

AWS マネジメント コンソールを介してパラメーターを変更するためのサポートは、今年後半に追加される予定です。

カスタム DB パラメータ グループを介して lower_case_table_names パラメータを設定し、関連する DB インスタンスを作成する前に設定します。既存の DB インスタンスのパラメータを変更すると、ポイントインタイム リカバリ バックアップおよびリードレプリカとの不整合が生じる可能性があります。

アマゾン RDS

于 2015-11-06T13:01:29.910 に答える