Могу ли я предложить вам реализовать addCustomer
следующим образом. Используйте локальный Statement
и создайте его, используя стиль try-with-resource, а затем установите параметры для запроса
public void addCustomer(String name, String surname, String company, String adress, String adressTwo){
String addQuery = "insert into musteri (name,surname,company,adress,adressTwo) values (?,?,?,?,?)" ;
try (PreparedStatement stmt = con.prepareStatement(addQuery)) {
stmt.setString(1, name);
stmt.setString(2, surname);
stmt.setString(3, company);
stmt.setString(4, adress);
stmt.setString(5, adressTwo);
stmt.executeUpdate();
System.out.println("Data Added");
} catch (Exception e) {
System.out.println("Error occured when adding value to database : " + e );
}
}
та же проблема. Я решил его тот путь:
mysqldump -uuser1 -ppassword1 database1 > backup.sql
sed '/^\/\*\!50013 DEFINER/d' backup.sql > backup_without_50013.sql
mysql -u user2 -ppassword2 -D database2 < backup_without_50013.sql
интересная вещь команда sed, которая, здесь, удаляет все начало строк /*! 50013.
Heidy
Пункты БЕЗОПАСНОСТИ SQL определяют, какую учетную запись MySQL использовать при проверке прав доступа на представление (поскольку Вы, вероятно, выяснили).
при создании представления, можно определить несколько опций для безопасности для того представления. Можно читать, больше здесь , но по существу доступом по умолчанию ограничивается 'устройством определения' представления, т.е. пользователем, который создал его.
Вам нужно будет обработайте файл резервной копии и измените DEFINER:
DEFINER = user_a
@ localhost
Я хотел бы изменить его на:
DEFINER = CURRENT_USER
Затем он будет автоматически связан с аккаунтом, который его загружает.