【问题标题】:Mysql Syntax error for spree migrations on heroku在heroku上进行狂欢迁移的Mysql语法错误
【发布时间】:2019-09-09 04:14:18
【问题描述】:

所以,我使用spree 3.7 并尝试在heroku 上部署我的rails 5.2.3 应用程序,并使用clearDB 插件支持MySQL。但是每次我运行迁移时,都会弹出语法错误。

 Mysql2::Error: You have an error in your SQL syntax; 
 check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL, `updated_at` datetime(6) NOT NULL,  INDEX `index_spree_addresses_o' at line 1

对应的表模式(由spree生成)如下:

create_table "spree_addresses", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
t.string "firstname"
t.string "lastname"
t.string "address1"
t.string "address2"
t.string "city"
t.string "zipcode"
t.string "phone"
t.string "state_name"
t.string "alternative_phone"
t.string "company"
t.integer "state_id"
t.integer "country_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["country_id"], name: "index_spree_addresses_on_country_id"
t.index ["firstname"], name: "index_addresses_on_firstname"
t.index ["lastname"], name: "index_addresses_on_lastname"
t.index ["state_id"], name: "index_spree_addresses_on_state_id"
end

参考的Gemfile:

gem 'spree_multi_vendor', github: 'spree-contrib/spree_multi_vendor'
gem 'spree', '~> 3.7.0'
gem 'spree_auth_devise', '~> 3.5'
gem 'spree_gateway', '~> 3.4'

我没有看到任何逻辑错误,因为在我的本地运行良好。有什么想法吗??

【问题讨论】:

  • 我不确定,但你可以尝试用 t.timestamp 代替 t.datetime "created_at",precision: 6, null: false 和 t.datetime "updated_at",precision: 6, null:假
  • 但是在索引创建过程中出现了错误。检查..

标签: mysql ruby-on-rails heroku spree cleardb


【解决方案1】:

我在使用 spree 插件时遇到了类似的问题。最终将 ClearDB 更改为 JawsDB。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多