我正在开发一个使用数组中定义的mysql表的应用程序.这样可以快速更改它们以便在开发/实时环境中使用.
除了关于为什么开发环境使用完全不同的表结构的问题,我已经得到了我希望是一个简单的问题.
我有一个表定义不同于其他表,如下所示:
'customer' => Array( 'variables' => 'customer.`variables`' )
所有其他表都以这种方式定义:
'customer' => Array( 'orders' => 'customer.orders' )
区别在于围绕表名称.显然这不是一个有效的表(我找不到在数据库中简单命名为'变量'的表.快速的想法如何跟踪这个?我在这一点上假设它具有特殊含义MySQL服务器,但这只是猜测.
注意:在同一个数组中定义了许多其他表,我只是将它们排除在外.每个其他定义都像第二个例子.
可以引用或不引用标识符.如果标识符包含特殊字符或是保留字,则必须在引用时引用它.当前字符集"_"和"$"中的字母数字字符集不是特殊字符.保留字列在第8.3节"保留字"中.(例外:在限定名称中的句点之后的保留字必须是标识符,因此不需要引用它.)
标识符引号字符是反引号("`"):
来自http://dev.mysql.com/doc/refman/5.1/en/identifiers.html
更新:在这种情况下,它似乎并不variables真正需要转义.但是,自动化工具(包括MySQL本身)往往会逃脱它; 可能,因为转义算法不是上下文敏感的,它只是在列表中找到单词:
mysql> set sql_quote_show_create=off;
Query OK, 0 rows affected (0.00 sec)
mysql> show create table my_test;
[...]
CREATE TABLE my_test (
id int(11) DEFAULT NULL,
`variables` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |