提问人:joey_joe1 提问时间:11/5/2023 最后编辑:user1191247joey_joe1 更新时间:11/5/2023 访问量:92
MySQL数据库自动转换为MariaDB [重复]
MySQL database converted to MariaDB automatically [duplicate]
问:
我们公司有一个基于 php 5.6 和 mysql 构建的非常古老的应用程序。我们最近决定进行一些更改并更改其托管位置。虽然迁移过程有点痛苦,但大部分都进展顺利。
新的主机提供程序使用 MariaDB 而不是 MySQL。整个应用程序工作正常,除了一部分。这部分基本上是从数据库中访问配置文件数据。当我们单击“我的个人资料”时,它会给出以下错误 -
您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“offset asc, gmt asc”附近使用的正确语法。
我们不知道需要什么版本的 MariaDB,因为没有办法分辨。当我们使用MySQL时,一切正常。
任何反馈将不胜感激。TIA。
我们不确定从哪里开始,因为 php 代码没有列出任何对 MariaDB 版本的引用。
答:
我强烈怀疑(因为语法有)您有一个名为“offset”的列名。MariaDB 在 MariaDB 10.6 中添加了 offset 作为关键字。asc
这意味着关键字需要在 sql 中用反引号引用。`
在您的代码库和运行 SQL 的 php 代码中查找“offset”一词,将其更改为 .“偏移”一词可能还有其他用法也需要引用。offset asc, gmt asc
`offset` asc, gmt asc
评论
ORDER BY `offset` asc
ORDER BY 'offset' asc
该错误不太可能是从MySQL更改为MariaDB的直接结果。它可能是由于对任一数据库的较新版本进行了更改(据推测该数据库也“相当旧”)而产生的。它也可能是由于失败的依赖项引起的逻辑错误而引起的。但这可能是因为您使用保留字作为属性名称。
PHP 5.6 的上一个版本是在四年前。您的实现可能包含重大漏洞。我确实希望您限制公众对此的访问,如果它托管在互联网上。
你把迁移描述为“痛苦的”——但对于PHP和MySQL来说,这应该是微不足道的。但是,从您的问题中可以清楚地看出,您对PHP和MySQL没有太多技能。如果您的公司正在运行自己的服务,那么您真的应该考虑雇用东西来支持这些服务或聘请 MSP。
是的,你可以自己学习如何做到这一点。如果您已经拥有计算机科学或软件工程的第一学位,那么需要几个小时才能达到合理的熟练程度。
我们无法告诉您为什么代码会以这种方式运行,因为我们看不到代码或日志。
评论