【发布时间】:2018-05-18 18:30:07
【问题描述】:
当我在运行 MySQL 5.6.22 的笔记本电脑上使用 rake db:schema:load 创建下表时,它可以正常加载:
create_table "inv_audits", force: :cascade do |t|
t.integer "inv_node_id", limit: 2, null: false
t.integer "inv_object_id", limit: 4, null: false
t.integer "inv_version_id", limit: 4, null: false
t.integer "inv_file_id", limit: 4, null: false
t.string "url", limit: 16383
t.string "status", limit: 18, default: "unknown", null: false
t.datetime "created", null: false
t.datetime "verified"
t.datetime "modified"
t.integer "failed_size", limit: 8, default: 0, null: false
t.string "failed_digest_value", limit: 255
t.text "note", limit: 65535
end
但是,当我尝试在运行 5.7.21 的桌面上执行相同操作时,它会失败并显示 Mysql2::Error: Row size too large.
从跟踪生成的 SQL 是:
CREATE TABLE `inv_audits` (
`id` int(11) auto_increment PRIMARY KEY,
`inv_node_id` smallint NOT NULL,
`inv_object_id` int(11) NOT NULL,
`inv_version_id` int(11) NOT NULL,
`inv_file_id` int(11) NOT NULL,
`url` varchar(16383),
`status` varchar(18) DEFAULT 'unknown' NOT NULL,
`created` datetime NOT NULL,
`verified` datetime,
`modified` datetime,
`failed_size` bigint DEFAULT 0 NOT NULL,
`failed_digest_value` varchar(255),
`note` text
) ENGINE=InnoDB
为什么这会在 5.7 中失败而在 5.6 中成功?
两台机器都是运行 macOS High Sierra (10.13.4) 的 64 位 Mac。
【问题讨论】:
标签: mysql ruby-on-rails-4