gpt4 book ai didi

mysql - DataMapper 将列迁移到新的数据类型

转载 作者:行者123 更新时间:2023-11-29 07:10:21 26 4
gpt4 key购买 nike

问题是我无法将列类型更改为“文本”

这是我看到的错误:

DarkBook:playground Justin$ rake migrate_up (in/Users/Justin/Dropbox/Business/datamapper/playground) ~ 开始迁移 == 执行迁移 #1:create_person_table 创建表 people (id SERIAL PRIMARY KEY, name VARCHAR(2), age INTEGER) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci -> 0.0112s -> 0.0129s = = 执行向上迁移 #2:change_name_constraints rake 中止!未初始化的常量 SQL::TableModifier::Text/Users/Justin/Dropbox/Business/datamapper/playground/rakefile.rb:61:in `block (3 levels) in '(通过使用 --trace 运行任务查看完整跟踪)我用来测试 DataMapper 的 Rake 脚本:https://gist.github.com/818143似乎好像 TableModifier 类中的 change_column 方法没有正确地将列更改语句转换为 MySQL。其他看似相关的错误是,如果我尝试将列转换为长度更长的字符串,我会得到以下信息:DarkBook:playground Justin$ rake migrate_up (in/Users/Justin/Dropbox/Business/datamapper/playground) ~ 开始迁移 == 执行向上迁移 #2:change_name_constraints

ALTER TABLE people ALTER COLUMN name TYPE String

~你的SQL语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“TYPE String”附近使用的正确语法(代码:1064,sql 状态:42000,查询:ALTER TABLE people ALTER COLUMN name TYPE String, uri: mysql://root:@127.0.0.1datamapper_test) rake 中止!您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的“TYPE String”附近使用的正确语法

/Users/Justin/Dropbox/Business/datamapper/playground/rakefile.rb:60:in `block (2 levels) in '(通过使用 --trace 运行任务查看完整跟踪)

根据我对 MySQL 的了解,“ALTER TABLE people ALTER COLUMN name TYPE String”不是有效的 MySQL 查询命令。 TYPE 不应存在,String 应转换为 VARCHAR。

查看 change_column 方法内部,我发现它只是我提供的类型的直接传递。这让我觉得也许我不应该直接调用 change_column 方法?

一旦我弄清楚了这一点并且我的工作进展顺利,我就会记录这些东西,因为我发现 DataMapper 的迁移 api 一直很糟糕。

最佳答案

change_column 不是特别亮。当前的实现是:

def change_column(name, type, opts = {})
@statements << "ALTER TABLE #{quoted_table_name} ALTER COLUMN #{quote_column_name(name)} TYPE #{type}"
end

意味着您需要指定底层的 sql 类型而不是 DataMapper 类型。即:

modify_table :people do
change_column :name, 'text'
end

我将更新文档以包含此内容。

关于mysql - DataMapper 将列迁移到新的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952678/

26 4 0
文章推荐: PHP MySQL登录函数
文章推荐: mysql - 一行显示mysql结果
文章推荐: MySQL查询问题
文章推荐: mysql时间比较-奇怪的结果
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com