- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在生产数据库中有一些预先存在的表。当我运行 show create table existing_table
时,它显示了创建表所需的 SQL,其中涉及多个 CONSTRAINT FOREIGN KEY REFERENCES
,涉及名称如下的约束:
_xxxxxxxxxxx_xxxxxxxxxxx_xx_f87560e38ebd0f6_fk_customer_customer_id
这看起来很正常,但是当我尝试创建一个像 new_existing_table
这样运行与 create table
查询中所示相同的 SQL 的 tmp 表时,我收到以下错误:
错误 1059 (42000):标识符名称“_xxxxxxxxxxxx_xxxxxxx_xxxxxx_xx_7435260ed6a242b0_fk_customer_customer_id”太长
如果这是生成原始表的 SQL,那么当我创建新表时它是如何失败的?即使我使表名非常短,如 tmp
,我也会得到同样的错误。
我在 Amazon RDS 上使用 MySQL、InnoDB。
最佳答案
这看起来像是与 MySQL Bug #44541 相关的问题,已在 MySQL 服务器版本 5.1.69、5.5.31、5.6.11 和 5.7.1 中修复。
The length of internally generated foreign key names was not checked. If internally generated foreign key names were over the 64 character limit, this resulted in invalid DDL from
SHOW CREATE TABLE
. This fix checks the length of internally generated foreign key names and reports an error message if the limit is exceeded.
问题是,该错误允许创建具有无效定义的表,因此此处重要的服务器版本不是您要加载到的服务器版本——它是在何时何地运行的服务器版本该表已创建。除了防止新创建的表具有无效的自动生成标识符外,该修复没有做任何事情。
标识符是约束标识符,它的值不是特别重要——它只是用来在错误消息中告诉你即将被违反的外键约束……所以你可以删除它。唯一需要明确声明它的时候是自动生成的太大的时候。
来自 http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html ,您会注意到关键字 CONSTRAINT
是可选的,即使提供了,它后面的 symbol
仍然是可选的。 symbol
是给您带来问题的元素。它被限制为 64 个字符。一直都是,但由于错误,限制没有正确施加。
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
关于mysql - 错误 1059 : Identifier Name Too Long on Foreign Key Constraints from Existing Table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615903/
我正在查看 SQL Server 2008 的 AdventureWorks 示例数据库,我在他们的创建脚本中看到他们倾向于使用以下内容: ALTER TABLE [Production].[Prod
我目前正在使用 PostgreSQL 9.5,想知道是否有可能在 ON CONFLICT ON CONSTRAINT 语句中包含 2 个约束的名称。我的sql如下 INSERT INTO LIVE.T
使用 htmlhelpers 可以限制你的助手将绑定(bind)到什么类型 public static HtmlString DatePicker(this HtmlHelper html,
我使用的是 Symfony 2.5,我的 Model 类如下: /** * @UserAssert\UserPasswordReset */ class ResetPassword { /** *
我有 3 个 View :A、B、C。 (A 和 B 的高度相等)开始时 B 的可见性消失,C 的顶部约束是 A 的底部,因此 C 出现在 A 下方。一段时间后,我将 A 的可见性更改为消失,将 B
在 Dojo NumberTextBox 的文档中,措辞引用了“Dojo 约束语言”,甚至包括有用的 link .不幸的是,链接指向的页面仅显示 this document has been depr
在我的表中,我有一个唯一的约束。在 hibernate 中,当我添加一个违反该约束的项目时,我想捕获它,因此它将更新而不是创建一个项目。 当我没有设置 try-catch block 时 up
我正在尝试在“或”UILabel 附近添加两条 1 像素线(由 UIViews 组成)。 除了我从 Interface Builder 中的第一张图片收到警告外,一切看起来都很好并且按预期工作: Le
我已经开始学习安卓了。我正在尝试使用 Google Map API。每次我尝试启动我的应用程序时,它都会崩溃,经过调查,我在 build.gradle 文件中发现了一个通知。 Please refer
我有自定义约束: @Target({FIELD, METHOD}) @Retention(RetentionPolicy.RUNTIME) @ConstraintComposition(Composi
我正在将 Graphql 服务器与 Prisma 一起使用。但是当我尝试运行代码时出现此错误我正在使用 const { GraphQLServer } = require('graphql-yoga'
更新到 com.android.support.constraint:constraint-layout:1.1.0 之后 约束布局崩溃说: All children of constraint la
我在 Xcode 10 中工作,在尝试向我的 View 添加一些非常简单的约束时遇到了一些错误。 我有一个 UICollectionViewCell,我正在向其添加一个 UIStackView。我调整
尝试在 Laravel 上创建一个待办事项列表应用程序,但是当我尝试单击按钮创建一个新的待办事项列表时,出现此错误: SQLSTATE[23000]: Integrity constraint vio
我正在编写一个基于网格的 View ,使用以下代码动态添加 NSLayoutConstraints for (x, column) in enumerate(board) { for (y,
我正在尝试使用 Constraint composition并希望为每个复合约束定义组,如下例所示:- 复合约束 @Target({ ElementType.FIELD, Elemen
我有一些添加了外键约束的表。它们与代码生成一起使用,以在生成的存储过程中设置特定的联接。 是否可以通过在事务中调用多个删除来覆盖这些约束,特别是 C# 中的“TransactionScope”,或者绝
我需要向现有 SQL Server 表添加约束,但前提是该表尚不存在。 我使用以下 SQL 创建约束。 ALTER TABLE [Foo] ADD CONSTRAINT [FK_Foo_Bar] FO
这是我的总输出: Executing SQL script in server ERROR: Error 1215: Cannot add foreign key constraint CREATE
我正在增加 Facebook SDK 登录按钮 (FBSDKLoginButton) 的大小。 Facebook SDK 源代码向 FBSDKLoginButton 添加了一个约束,height =
我是一名优秀的程序员,十分优秀!