开发者社区> 问答> 正文

create table 语句 table_option解析问题

create database user default charset=utf8 collate=utf8_general_ci; 如果collate不加default好像解析有问题,与前面的options一起解析成SQLBinaryOpExpr了 druid-1.1.23版本 https://dev.mysql.com/doc/refman/8.0/en/create-table.html

原提问者GitHub用户ljq132008

展开
收起
山海行 2023-07-05 19:18:39 88 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    就是Druid在解析SQL时,并不能正确处理CREATE TABLE语句中的table_option部分。
    因为Druid底层使用的JsqlParser不支持这些table_option内容。
    即便支持CREATE TABLE命令语法,但对于表选项仍然不完整。这导致Druid无法正确解析包含这些table_option的CREATE TABLE语句。

    2023-07-30 19:43:35
    赞同 展开评论 打赏
  • 根据你提供的信息,使用Druid解析器在处理MySQL的CREATE DATABASE语句时可能会出现问题。具体地说,当在CREATE DATABASE语句中指定collate时,解析器可能将其与前面的options一起解析为SQLBinaryOpExpr表达式,而不是正确地解析为collate子句。

    这可能是Druid解析器在某些情况下无法正确处理CREATE DATABASE语句中的collate子句的一个已知问题。通常,collate子句用于指定数据库的字符集和校对规则。

    2023-07-11 09:16:59
    赞同 展开评论 打赏
  • 问题已修复,请用新版本

    https://github.com/alibaba/druid/releases/tag/1.2.5

    原回答者GitHub用户wenshao

    2023-07-06 10:51:46
    赞同 展开评论 打赏
  • 根据您提供的信息,您想创建一个名为"user"的数据库,并设置默认字符集为utf8,排序规则为utf8_general_ci。然而,如果不使用"default"关键字来指定collate参数,默认的解析方式可能会导致问题。

    在MySQL 8.0的官方文档中,我们可以找到CREATE TABLE语句的语法定义。根据文档,我们可以使用以下语法来创建数据库并设置默认字符集和排序规则:

    CREATE DATABASE `user` 
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE utf8_general_ci;
    

    请注意,上述语句是用于创建数据库而不是表。如果您要创建包含特定字符集和排序规则的表,请使用类似的语法:

    CREATE TABLE `table_name`
    (
        -- 列定义
    )
    DEFAULT CHARACTER SET utf8
    COLLATE utf8_general_ci;
    

    以上代码将创建一个名为"table_name"的表,并将其默认字符集设置为utf8,排序规则设置为utf8_general_ci。

    希望这些信息对您有所帮助!如果您还有其他问题,请随时提问。

    2023-07-05 19:34:51
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像