MySQL 哈希值作为列名

标签 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 命名规则,但到目前为止我还没有想出任何东西。它只是说所有字母数字字符加上“_”和“$”都可以使用,在这种情况下应该没问题。

我错过了什么?

最佳答案

将表和字段名称放在反引号中:`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

关于MySQL 哈希值作为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808435/

相关文章:

mysql - 创建表时出现错误#1064 mysql

mysql - 选择 WHERE IN 并按行数限制

mysql - 如何在mysql中找到小id和大id

c# - MD5 Hash 在本地机器上不同

mysql - 通过自动执行内连接进行排序

android - AWS/Android 无法计算 md5 哈希

android - 如何使用 Eclipse 生成我的 MD5 和 SHA1 指纹用于调试 keystore (Android)

mysql - SQL语句中出现错误

PHP 使用 PDO 检查远程数据库的查询是否返回数据

mysql - 编写一个 mysql 查询来计算唯一(重复)