MySQL哈希值作为列名

时间:2011-10-18 14:00:11

标签: mysql md5 mysql-error-1064

创建一个以PHP md5(microtime())为结果的表格时,我遇到语法错误。

特别是,错误会被**围绕它的部分抛出:

CREATE TABLE form_data_38 (
    id           INT SIGNED auto_increment NOT NULL,
    rltd_pri_key INT SIGNED NULL,
    0accc77c084cc74a51dee479f8d095e3   TEXT(65535) NOT NULL,
    **092e60b78f7804e86ea9a6e83701a929 TEXT(65535) NOT NULL**,
    6734131796201537410e4d43635bf1b3   TEXT(65535) NULL,
    PRIMARY KEY (id)
) TYPE=InnoDB;

令我感到困惑的是,为什么它会被抛到那个位置而不是之前的其他2个哈希值。我在列名中加了'a',它创建表没问题。我已经搜索了MySQL的命名规则,到目前为止我还没有想出任何东西。它只是说所有字母数字字符加'_'和'$'都可以使用,在这种情况下应该没问题。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

将表格和字段名称放在反引号中:`09e4_fieldName`,至少对于那些可能会产生此类问题的名称:

CREATE TABLE form_data_38 
  ( id INT SIGNED auto_increment NOT NULL 
  , rltd_pri_key INT SIGNED NULL 
  , `0accc77c084cc74a51dee479f8d095e3` TEXT(65535) NOT NULL 
  , `092e60b78f7804e86ea9a6e83701a929` TEXT(65535) NOT NULL 
  , `6734131796201537410e4d43635bf1b3` TEXT(65535) NULL 
  , PRIMARY KEY (id) 
  ) 
ENGINE = InnoDB ;                    --- ENGINE, not TYPE