You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

向phpMyAdmin导入SQL查询遇1064语法错误,如何修复?

解决MySQL创建JSON类型表时的1064语法错误问题

别着急,这个问题我碰到过好几次,根源其实是MySQL版本不支持JSON类型导致的!

为什么会报错?

JSON类型是MySQL在5.7.8版本才正式引入的特性,而你用的XAMPP如果是比较旧的版本,自带的MySQL版本大概率低于5.7.8,这时候数据库就识别不了JSON这个字段类型,直接抛出语法错误。

两种修复方案,你可以选适合自己的:

方案1:升级XAMPP的MySQL版本

  • 最简单的方式是直接下载最新版的XAMPP,它自带的MySQL版本肯定支持JSON类型。注意升级前一定要备份好现有的数据库文件(XAMPP里的mysql/data目录),避免数据丢失。
  • 如果不想全量升级XAMPP,也可以单独更新其中的MySQL组件,但操作相对繁琐,新手更推荐直接更新整个XAMPP。

方案2:不升级,用其他字段类型替代JSON

如果暂时不想升级,可以用TEXTLONGTEXT类型来存储JSON格式的字符串,虽然没有JSON类型的原生查询函数支持,但可以在PHP层面处理编码解码:
修改后的建表语句如下:

CREATE TABLE security_user ( 
    id INT AUTO_INCREMENT NOT NULL, 
    email VARCHAR(180) NOT NULL, 
    roles TEXT NOT NULL, 
    password VARCHAR(255) NOT NULL, 
    UNIQUE INDEX UNIQ_52825A88E7927C74 (email), 
    PRIMARY KEY(id) 
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;
  • 存数据时:用PHP的json_encode()把角色数组转换成字符串再存入roles字段;
  • 取数据时:用json_decode()把取出的字符串转回数组或对象,就能正常使用了。

怎么确认自己的MySQL版本?

可以在PHP里执行这段代码查看:

$conn = mysqli_connect('localhost', 'root', '你的数据库密码');
echo mysqli_get_server_info($conn);

或者打开XAMPP的phpMyAdmin,首页就能看到当前MySQL的版本号,确认是不是低于5.7.8。

内容的提问来源于stack exchange,提问作者triker

火山引擎 最新活动