我们的数据库中有一个带有“名称”varchar 列的公司表,其大小目前为 30 个字符。我们将其大小更改为 50 个字符的看似简单的任务已经变成了一个问题。尝试更改它并通过 Sybase Central 保存更改时,我们收到以下错误:
[Sybase][ODBC Driver][SQL Anywhere]Illegal column definition: Name
SQLCODE: -1046
SQLSTATE: 42000
SQL Statement: ALTER TABLE "DBA"."Companies" ALTER "Name" VARCHAR(50)
我们在列周围尝试了各种转义字符,认为这可能与 Sybase 内部对“名称”一词的不同处理有关。我们对此列没有索引或约束,并删除了确实存在的单个触发器,只是试图隔离任何潜在因素。更让我们感到困惑的是,我们有一个 Companies_a 表,它跟踪对 Companies 表的所有更改,该表具有几乎完全相同的模式,包括 Name 列。我们能够毫无问题地更改该列的大小,这似乎表明它不一定是“名称”一词的问题。我浏览了该表在 Sybase Central 中的所有选项卡,并没有看到关于该表或该列的任何特殊/不同之处。
谷歌搜索这个问题很困难,因为“名称”这个词非常常见。我们有我们可以做的解决方法(即创建临时列、复制、删除和重新创建列、复制回来),但如果可能的话,我想确切地了解这里发生了什么以及为什么。