草庐IT

mysql - 如果表存在,dropwizard hibernate liquibase 迁移将失败

coder 2023-10-06 原文

我在我的本地数据库上运行了一次迁移,一切顺利。我正在为同一模式的另一个数据库使用另一个 .yml 文件,但失败并显示错误

! com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'myTable' already exists

我怎样才能让它工作?

liquibase 包装器是否适用于 mysql 模式?我能够使用此文档转储迁移 http://www.dropwizard.io/0.7.1/docs/manual/migrations.html

这是migrations.xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.3.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
    <changeSet author="(generated)" id="1501263805585-1">
        <createTable catalogName="deployer" schemaName="deployer" tableName="AuthData">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-2">
        <createTable catalogName="deployer" schemaName="deployer" tableName="DeployStatus">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="message" type="VARCHAR(255)"/>
            <column name="statusDate" type="VARCHAR(255)"/>
            <column name="statusType" type="VARCHAR(255)"/>
            <column name="deploy_id" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-3">
        <createTable catalogName="deployer" schemaName="deployer" tableName="Service">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="applicationData" type="VARCHAR(255)"/>
            <column name="artifactID" type="VARCHAR(255)"/>
            <column name="deployStatus" type="INT"/>
            <column name="deployedFrom" type="BIGINT">
                <constraints nullable="false"/>
            </column>
            <column name="diskBytes" type="BIGINT"/>
            <column name="env" type="VARCHAR(255)"/>
            <column name="executionLevel" type="INT"/>
            <column name="groupID" type="VARCHAR(255)"/>
            <column name="imageTag" type="VARCHAR(255)"/>
            <column name="item" type="INT"/>
            <column name="jobFqn" type="VARCHAR(255)"/>
            <column name="jobStatus" type="INT"/>
            <column name="jobUUID" type="VARCHAR(255)"/>
            <column name="memBytes" type="BIGINT"/>
            <column name="namespace" type="VARCHAR(255)"/>
            <column name="numInstances" type="INT">
                <constraints nullable="false"/>
            </column>
            <column name="requestStatus" type="INT"/>
            <column name="taskID" type="VARCHAR(255)"/>
            <column name="version" type="VARCHAR(255)"/>
            <column name="environment_id" type="BIGINT"/>
            <column name="networkServiceConfig_id" type="BIGINT"/>
            <column name="userRequest_id" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-4">
        <createTable catalogName="deployer" schemaName="deployer" tableName="ServiceAppStatus">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="deployEnded" type="VARCHAR(255)"/>
            <column name="deployStarted" type="VARCHAR(255)"/>
            <column name="requestReceived" type="VARCHAR(255)"/>
            <column name="statusType" type="INT"/>
            <column name="undeployEnded" type="VARCHAR(255)"/>
            <column name="undeployStarted" type="VARCHAR(255)"/>
            <column name="service_id" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-5">
        <createTable catalogName="deployer" schemaName="deployer" tableName="ServiceDeploy">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="artifactId" type="VARCHAR(255)"/>
            <column name="deploymentArtifacts" type="VARCHAR(255)"/>
            <column name="executionLevel" type="INT"/>
            <column name="groupId" type="VARCHAR(255)"/>
            <column name="item" type="INT"/>
            <column name="serviceTag" type="VARCHAR(255)"/>
            <column name="url" type="VARCHAR(255)"/>
            <column name="versionId" type="VARCHAR(255)"/>
            <column name="deploy_id" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-6">
        <createTable catalogName="deployer" schemaName="deployer" tableName="ServiceDeploy_dependentIds">
            <column name="ServiceDeploy_id" type="BIGINT">
                <constraints nullable="false"/>
            </column>
            <column name="dependentIds" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="spalshik (generated)" id="1501263805585-7">
        <createTable catalogName="deployer" schemaName="deployer" tableName="ServiceRoutes_routes">
            <column name="ServiceRoutes_id" type="BIGINT">
                <constraints nullable="false"/>
            </column>
            <column name="routes" type="VARCHAR(255)"/>
            <column name="routes_KEY" type="VARCHAR(255)">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-8">
        <createTable catalogName="deployer" schemaName="deployer" tableName="ServiceStatus">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="message" type="VARCHAR(255)"/>
            <column name="statusDate" type="VARCHAR(255)"/>
            <column name="statusType" type="INT"/>
            <column name="serviceDeploy_id" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-9">
        <createTable catalogName="deployer" schemaName="deployer" tableName="Service_dependentIds">
            <column name="Service_id" type="BIGINT">
                <constraints nullable="false"/>
            </column>
            <column name="dependentIds" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-10">
        <createTable catalogName="deployer" schemaName="deployer" tableName="Service_endPoints">
            <column name="Service_id" type="BIGINT">
                <constraints nullable="false"/>
            </column>
            <column name="endPoints" type="VARCHAR(255)"/>
            <column name="endPoints_KEY" type="VARCHAR(255)">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-11">
        <createTable catalogName="deployer" schemaName="deployer" tableName="UserData">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-12">
        <createTable catalogName="deployer" schemaName="deployer" tableName="UserRequestStatus">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="ended" type="VARCHAR(255)"/>
            <column name="received" type="VARCHAR(255)"/>
            <column name="started" type="VARCHAR(255)"/>
            <column name="statusType" type="VARCHAR(255)"/>
            <column name="userRequest_id" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-13">
        <createTable catalogName="deployer" schemaName="deployer" tableName="deployer">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="started" type="datetime"/>
            <column name="status" type="VARCHAR(255)"/>
            <column name="version" type="VARCHAR(255)"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-14">
        <createTable catalogName="deployer" schemaName="deployer" tableName="deploys">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="callerId" type="VARCHAR(255)"/>
            <column name="context" type="VARCHAR(255)"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-15">
        <createTable catalogName="deployer" schemaName="deployer" tableName="ephemeralEnvironments">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="environmentType" type="INT"/>
            <column name="name" type="VARCHAR(255)"/>
            <column name="requestStatus" type="VARCHAR(255)"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-16">
        <createTable catalogName="deployer" schemaName="deployer" tableName="networkServiceConfig">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="endpoint" type="VARCHAR(255)"/>
            <column name="host" type="VARCHAR(255)"/>
            <column name="port" type="INT">
                <constraints nullable="false"/>
            </column>
            <column name="url" type="VARCHAR(255)"/>
        </createTable>
    </changeSet>
    <changeSet author="spalshik (generated)" id="1501263805585-17">
        <createTable catalogName="deployer" schemaName="deployer" tableName="routes">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="apceraInternalAdminRoute" type="VARCHAR(255)"/>
            <column name="apceraInternalRoute" type="VARCHAR(255)"/>
            <column name="mwRoute" type="VARCHAR(255)"/>
            <column name="paasRoute" type="VARCHAR(255)"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-18">
        <createTable catalogName="deployer" schemaName="deployer" tableName="serviceRoutes">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="name" type="VARCHAR(255)"/>
            <column name="port" type="INT">
                <constraints nullable="false"/>
            </column>
            <column name="service_id" type="BIGINT"/>
            <column name="serviceRoutes_id" type="BIGINT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-19">
        <createTable catalogName="deployer" schemaName="deployer" tableName="userRequest">
            <column name="userRequest_id" type="BIGINT">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-20">
        <createTable catalogName="deployer" schemaName="deployer" tableName="userRequests">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="authData" type="TINYBLOB"/>
            <column name="environment_id" type="BIGINT"/>
            <column name="namespace" type="VARCHAR(255)"/>
            <column name="requestReceived" type="VARCHAR(255)"/>
            <column name="sentFromHost" type="VARCHAR(255)"/>
            <column name="userRequestPath" type="VARCHAR(255)"/>
            <column name="userRequestStatus" type="INT"/>
        </createTable>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-21">
        <addPrimaryKey catalogName="deployer" columnNames="ServiceRoutes_id, routes_KEY" constraintName="PRIMARY" schemaName="deployer" tableName="ServiceRoutes_routes"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-22">
        <addPrimaryKey catalogName="deployer" columnNames="Service_id, endPoints_KEY" constraintName="PRIMARY" schemaName="deployer" tableName="Service_endPoints"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-23">
        <addPrimaryKey catalogName="deployer" columnNames="userRequest_id" constraintName="PRIMARY" schemaName="deployer" tableName="userRequest"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-24">
        <addForeignKeyConstraint baseColumnNames="service_id" baseTableCatalogName="deployer" baseTableName="serviceRoutes" baseTableSchemaName="deployer" constraintName="FK_3ktuugpv4fggfyewoh2g2ychb" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="Service" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-25">
        <addForeignKeyConstraint baseColumnNames="Service_id" baseTableCatalogName="deployer" baseTableName="Service_endPoints" baseTableSchemaName="deployer" constraintName="FK_42dx83vof8wtbh7t0qnqv0o4n" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="Service" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-26">
        <addForeignKeyConstraint baseColumnNames="service_id" baseTableCatalogName="deployer" baseTableName="ServiceAppStatus" baseTableSchemaName="deployer" constraintName="FK_5qyc3fk6i1p75c6y6bshgqf4r" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="Service" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-27">
        <addForeignKeyConstraint baseColumnNames="userRequest_id" baseTableCatalogName="deployer" baseTableName="UserRequestStatus" baseTableSchemaName="deployer" constraintName="FK_5tjecs7hj3m7us8hsn98trj1h" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="userRequests" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-28">
        <addForeignKeyConstraint baseColumnNames="ServiceRoutes_id" baseTableCatalogName="deployer" baseTableName="ServiceRoutes_routes" baseTableSchemaName="deployer" constraintName="FK_9u9qpnbb2n5yqmj94winl2yd5" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="serviceRoutes" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-29">
        <addForeignKeyConstraint baseColumnNames="deploy_id" baseTableCatalogName="deployer" baseTableName="DeployStatus" baseTableSchemaName="deployer" constraintName="FK_9x0gysgvns0gdfi092q1qe73j" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="deploys" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-30">
        <addForeignKeyConstraint baseColumnNames="networkServiceConfig_id" baseTableCatalogName="deployer" baseTableName="Service" baseTableSchemaName="deployer" constraintName="FK_b63wbyv84yy825er8lt6h6eij" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="networkServiceConfig" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-31">
        <addForeignKeyConstraint baseColumnNames="environment_id" baseTableCatalogName="deployer" baseTableName="Service" baseTableSchemaName="deployer" constraintName="FK_hn3ubyorvnaiio8opayvwud88" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="ephemeralEnvironments" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-32">
        <addForeignKeyConstraint baseColumnNames="ServiceDeploy_id" baseTableCatalogName="deployer" baseTableName="ServiceDeploy_dependentIds" baseTableSchemaName="deployer" constraintName="FK_imf7a562xiqh41nh0kmfxs22k" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="ServiceDeploy" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-33">
        <addForeignKeyConstraint baseColumnNames="Service_id" baseTableCatalogName="deployer" baseTableName="Service_dependentIds" baseTableSchemaName="deployer" constraintName="FK_ncklvx0g74ul9b81kp63qbx1c" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="Service" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-34">
        <addForeignKeyConstraint baseColumnNames="deploy_id" baseTableCatalogName="deployer" baseTableName="ServiceDeploy" baseTableSchemaName="deployer" constraintName="FK_qf43uf6tcqqsat39vx9g6uggl" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="deploys" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-35">
        <addForeignKeyConstraint baseColumnNames="userRequest_id" baseTableCatalogName="deployer" baseTableName="userRequest" baseTableSchemaName="deployer" constraintName="FK_quovo4p0lawd4rkt2xmwtb44e" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="Service" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-36">
        <addForeignKeyConstraint baseColumnNames="serviceRoutes_id" baseTableCatalogName="deployer" baseTableName="serviceRoutes" baseTableSchemaName="deployer" constraintName="FK_quw469h9qpk2pjpyd7nis6jey" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="Service" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-37">
        <addForeignKeyConstraint baseColumnNames="environment_id" baseTableCatalogName="deployer" baseTableName="userRequests" baseTableSchemaName="deployer" constraintName="FK_rbe9okb4x1k77xluy1tibohw6" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="ephemeralEnvironments" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-38">
        <addForeignKeyConstraint baseColumnNames="userRequest_id" baseTableCatalogName="deployer" baseTableName="Service" baseTableSchemaName="deployer" constraintName="FK_rvx1c6um92vde9so5v3x9pkry" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="userRequests" referencedTableSchemaName="deployer"/>
    </changeSet>
    <changeSet author="(generated)" id="1501263805585-39">
        <addForeignKeyConstraint baseColumnNames="serviceDeploy_id" baseTableCatalogName="deployer" baseTableName="ServiceStatus" baseTableSchemaName="deployer" constraintName="FK_tfv2a1us83fj83cgks8ye5eqi" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableCatalogName="deployer" referencedTableName="ServiceDeploy" referencedTableSchemaName="deployer"/>
    </changeSet>
</databaseChangeLog>

我如何使用 dropwizard liquibase 命令行生成更新日志

然后如何运行迁移以仅迁移来自先前架构的更改,这样我就不会看到“表已存在”错误?

每次更改实体对象时,更改日志的创建都是手动过程吗?或者当我使用文档中的“db migrate”命令时,dropwizard 包装器是否识别所做的更改并更新它们?

最佳答案

添加如下前置条件

<preConditions onFail="MARK_RAN">
            <not>
                <tableExists tableName="Your_Table_Name"/>
            </not>
        </preConditions>     

例如

 <changeSet author="(generated)" id="1501263805585-5">  
 <preConditions onFail="MARK_RAN">
                <not>
                    <tableExists tableName="ServiceDeploy"/>
                </not>
            </preConditions>  
        <createTable catalogName="deployer" schemaName="deployer" tableName="ServiceDeploy">
            <column autoIncrement="true" name="id" type="BIGINT">
                <constraints primaryKey="true"/>
            </column>
            <column name="artifactId" type="VARCHAR(255)"/>
            <column name="deploymentArtifacts" type="VARCHAR(255)"/>
            <column name="executionLevel" type="INT"/>
            <column name="groupId" type="VARCHAR(255)"/>
            <column name="item" type="INT"/>
            <column name="serviceTag" type="VARCHAR(255)"/>
            <column name="url" type="VARCHAR(255)"/>
            <column name="versionId" type="VARCHAR(255)"/>
            <column name="deploy_id" type="BIGINT"/>
        </createTable>
    </changeSet>     

关于mysql - 如果表存在,dropwizard hibernate liquibase 迁移将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45601982/

有关mysql - 如果表存在,dropwizard hibernate liquibase 迁移将失败的更多相关文章

  1. ruby-on-rails - Ruby on Rails 迁移,将表更改为 MyISAM - 2

    如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设

  2. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  3. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  4. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  5. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  6. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  7. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  8. ruby-on-rails - rspec - 如何检查方法是否存在? - 2

    我的模型有defself.empty_building//stuffend我怎样才能对这个现有的进行rspec?,已经尝试过:describe"empty_building"dosubject{Building.new}it{shouldrespond_to:empty_building}endbutgetting:Failure/Error:it{shouldrespond_to:empty_building}expected#torespondto:empty_building 最佳答案 你有一个类方法self.empty_bu

  9. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  10. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

随机推荐