Mysql创建名称中包含特殊字符的数据库

时间:2009-05-29 12:14:27

标签: mysql special-characters

我想创建一个名称中包含特殊字符的数据库。例如, (。, - ,_,@,#,$,%,&,*)

任何人都可以提供任何输出吗?

3 个答案:

答案 0 :(得分:29)

我强烈建议您不要使用此类名称创建数据库。但如果你绝对必须,那么这里是restrictions

  • 没有标识符可以包含ASCII NUL(0x00)或值为255的字节。
  • 数据库,表和列名称不应以空格字符结尾。
  • 数据库和表名称不能包含“/”,“\”,“。”或文件名中不允许的字符。

要创建数据库,您可以执行以下操作:

mysql> create database `really@strange*database$name`;

答案 1 :(得分:3)

简单:不要。

可以使用mysql中的反引号来逃避异国表名,但我不知道你是否可以在反引号中使用任何。在软件生命周期的剩余时间内,它会带来很大的痛苦。

我宁愿建议创建另一个表来保存那些奇特的名字。

-- Example:
CREATE TABLE _DatabaseMetadata (
    databaseName VARCHAR(255),
    exoticName VARCHAR(255)
) DEFAULT CHARSET=utf8;

答案 2 :(得分:1)

简短回答:

  • 别。我强烈建议保留所有由A-Z,a-z,0-9和_字符组成的标识符。您可以将“异国情调”的名称存储在专栏或评论中。

答案很长:

  • 您可以使用异国情调的角色命名您的列,表,键,外键,视图,甚至数据库,但很可能您将来会后悔。
  • 如果你坚持这样做,你需要在反引号(`)中引用你的标识符。
  • 如果您的标识符必须包含另一个`内部,您可以将其标记为两次(例如,异国情调.name - >`exotic``name`)
  • 对于不那么简单的事情,如果您在数据库的名称中使用异域(甚至非常规)字符(包括一个简单的空间),那些字符(据我所知,除了az,AZ之外的所有字符) 0-9和_)被转义为由@转义的4位十六进制四元组,例如`我的数据库`成为我的@ 0020数据库。此表单用作存储数据库/表的目录/文件的名称,例如另外,information_schema.INNODB_SYS_FOREIGN中的项可能与操作系统有关(理论上,您可能希望运行SHOW VARIABLES LIKE 'version_compile_os'来适应它)。你知道 - 有了异国情调的名字,这一切都变得更加复杂,最终它并不值得。