Как исправить заглавные MySQL запрос в PHP и MySQL
В настоящее время я работаю над сайтом, который использует библиотеку ADODB. На всем сайте все запросы написаны в верхнем регистре.
Проблема в том, что, когда я запускаю запрос, он не работает из-за имени таблицы, которая называется UPPERCASE. Но когда я изменяю имя таблицы на строчные, это работает.
$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, где USERNAME = 'fury', false) % строка 1012, файл: adodb.inc.php
ADOConnection.Execute (SELECT * FROM MEMBERS, где USERNAME = 'fury') % строка 15, файл: index.php
Имейте в виду, я не хочу менять сценарии. Есть 1000 файлов и 10000 мест.
Есть ли какая-либо библиотека, или я могу выполнить эти запросы без ошибок?
1 ответ
Версия для живого производителя была ядром Linux. но новый сайт разработчиков - Ubuntu.
Я сделал это на Ubuntu/ MySQL CML, и это не сработало.
Решение заключается в том, чтобы перенастроить базу данных mySql в AWS/rdbs.
Вы должны изменить параметр "lower_case_table_names" для вашего экземпляра (ов) БД. До сегодняшнего дня параметр lower_case_table_names не был изменяемым, системное значение по умолчанию - ноль (0) или "имена таблиц сохраняются, как указано, а сравнения чувствительны к регистру". Начиная сразу, значения ноль и единица (имена таблиц хранятся в нижнем регистре и сравнения не чувствительны к регистру). См. Документацию MySQL для получения дополнительной информации о параметре lower_case_table_names.
Параметр lower_case_table_names можно указать с помощью API rds-modify-db-parameter-group. Просто включите имя параметра и укажите желаемое значение, например, в следующем примере:
rds-modify-db-parameter-group example --parameters "name=lower_case_table_names, value=1, method=pending-reboot" --region us-east-1
Ожидается, что поддержка изменения параметров через Консоль управления AWS будет добавлена позднее в этом году.
установить параметр lower_case_table_names через пользовательскую группу параметров БД и сделать это перед созданием связанного экземпляра БД. Изменение параметра для существующих экземпляров БД может привести к несоответствиям с резервными копиями восстановления на определенный момент времени и с репликами чтения.