Spring Boot Sping Boot 应用程序在Google Cloud 500错误

kcrjzv8t  于 7个月前  发布在  Spring
关注(0)|答案(1)|浏览(67)

我的repository方法:

public List<PublicAnnouncementListItem> getAllPublicAnnouncementListItems(String Country, String City, String DateRange, String UID) {
        String from = DateRange.split("-")[0];
        String to = DateRange.split("-")[1];
        return jdbcTemplate.query(
                "SELECT `AnnouncementID`, `AnimalName`, `Species`, `Breed`, `DateRange`, `AnimalImage`, `Country`, `City` FROM `announcement` JOIN `user` ON `announcement`.`OwnerID`=`user`.`UID` WHERE `OwnerID` = `AssignedKeeperID` AND `user`.`UID` = `announcement`.`OwnerID` and `Country`=? and `City`=? and OwnerID!=? and STR_TO_DATE(SUBSTRING_INDEX(`DateRange`, '-', 1), '%d.%m.%Y') BETWEEN STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(SUBSTRING_INDEX(`DateRange`, '-', -1), '%d.%m.%Y') BETWEEN STR_TO_DATE(?, '%d.%m.%Y') AND  STR_TO_DATE(?, '%d.%m.%Y');",
                BeanPropertyRowMapper.newInstance(PublicAnnouncementListItem.class),
                Country,
                City,
                UID,
                from,
                to,
                from,
                to
        );
    }

字符串
我的控制器方法:

@GetMapping("/api/getAllPublicAnnouncementListItems/{Country}/{City}/{DateRange}/{UID}")
    public List<PublicAnnouncementListItem> getAllPublicAnnouncementListItems(@PathVariable("Country") String Country, @PathVariable("City") String City, @PathVariable("DateRange") String DateRange, @PathVariable("UID") String UID) {
       return announcementsRepository.getAllPublicAnnouncementListItems(Country, City, DateRange, UID);
    }


sql查询更可读:

SELECT 
`AnnouncementID`, 
`AnimalName`,
`Species`, 
`Breed`, 
`DateRange`, 
`AnimalImage`, 
`Country`, 
`City`
FROM 
`announcement`
JOIN `user` ON `announcement`.`OwnerID`=`user`.`UID`
WHERE
 `OwnerID` = `AssignedKeeperID` AND
 `user`.`UID` = `announcement`.`OwnerID` 
  and `Country`=? and `City`=? and OwnerID!=? 
  and STR_TO_DATE(SUBSTRING_INDEX(`DateRange`, '-', 1), '%d.%m.%Y') BETWEEN STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(?, '%d.%m.%Y') 
  AND STR_TO_DATE(SUBSTRING_INDEX(`DateRange`, '-', -1), '%d.%m.%Y') BETWEEN STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(?, '%d.%m.%Y');


查询用于获取基于指定日期范围的记录
告诉我我的代码可能有什么问题。当我在本地计算机上运行我的应用程序时,它可以工作但如果我将Sping Boot 应用程序部署到Google Cloud,我会得到一个错误:java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'and STR_TO_DATE(SUBSTRING_INDEX(DateRange, '-', 1), '%d.%m.%Y') BETWEEN STR...' at line 1。有趣的是当我尝试在PHP中执行查询时,我的管理员-我的意思是在连接到Sping Boot 应用程序的数据库中-一切正常,查询不会返回任何错误。

deikduxw

deikduxw1#

当我在googlecloud上部署应用程序时,我没有注意到我选择了错误的项目adam314pi@cloudshell:~/quickadoptionapiserver(wrong_project)$。这就是为什么我一直在更新错误的项目,当我将项目更改为正确的项目时,一切都开始工作了

相关问题