【问题标题】:devise trackable migration error using mysql database使用 mysql 数据库设计可跟踪的迁移错误
【发布时间】:2021-10-20 12:58:39
【问题描述】:

在学习教程时,我在进行迁移时遇到了一个我无法弄清楚的错误。 迁移我为可跟踪设计编写的代码时发生错误。 因为我是初学者 谢谢。

可追踪

class AddTrackableToDevise < ActiveRecord::Migration[6.1]
  def up
    unless column_exists?(:users, :sign_in_count)
      add_column :users, :sign_in_count, :integer, default: 0, null: false 
    end
    unless column_exists?(:users, :current_sign_in_at)
      add_column :users, :current_sign_in_at, :datetime
    end
    unless column_exists?(:users, :last_sign_in_at)
      add_column :users, :last_sign_in_at, :datetime
    end
    unless column_exists?(:users, :current_sign_in_ip)
      add_column :users, :current_sign_in_ip, :inet
    end
    unless column_exists?(:users, :last_sign_in_ip)
      add_column :users, :last_sign_in_ip, :inet  
    end
  end
 
  def down
    remove_columns :users, :sign_in_count, :current_sign_in_at, :last_sign_in_at, :current_sign_in_ip, :last_sign_in_ip
  end
end

错误

== 20210817054855 AddTrackableToDevise: migrating =============================
-- column_exists?(:users, :sign_in_count)
   -> 0.0029s
-- column_exists?(:users, :current_sign_in_at)
   -> 0.0023s
-- column_exists?(:users, :last_sign_in_at)
   -> 0.0020s
-- column_exists?(:users, :current_sign_in_ip)
   -> 0.0020s
-- add_column(:users, :current_sign_in_ip, :inet)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
 
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 'inet' at line 1
/home/user/ruby_projects/ruby_auth/authapp/db/migrate/20210817054855_add_trackable_to_devise.rb:13:in `up'
/home/user/ruby_projects/ruby_auth/authapp/bin/rails:5:in `<top (required)>'
/home/user/ruby_projects/ruby_auth/authapp/bin/spring:10:in `block in <top (required)>'
/home/user/ruby_projects/ruby_auth/authapp/bin/spring:7:in `<top (required)>'
 
Caused by:
ActiveRecord::StatementInvalid: 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 'inet' at line 1
/home/user/ruby_projects/ruby_auth/authapp/db/migrate/20210817054855_add_trackable_to_devise.rb:13:in `up'
/home/user/ruby_projects/ruby_auth/authapp/bin/rails:5:in `<top (required)>'
/home/user/ruby_projects/ruby_auth/authapp/bin/spring:10:in `block in <top (required)>'
/home/user/ruby_projects/ruby_auth/authapp/bin/spring:7:in `<top (required)>'
 
Caused by:
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 'inet' at line 1
/home/user/ruby_projects/ruby_auth/authapp/db/migrate/20210817054855_add_trackable_to_devise.rb:13:in `up'
/home/user/ruby_projects/ruby_auth/authapp/bin/rails:5:in `<top (required)>'
/home/user/ruby_projects/ruby_auth/authapp/bin/spring:10:in `block in <top (required)>'
/home/user/ruby_projects/ruby_auth/authapp/bin/spring:7:in `<top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

【问题讨论】:

    标签: ruby-on-rails mysql2


    【解决方案1】:

    将迁移中出现的所有inet 更改为:string,它应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 2020-08-16
      • 2018-12-02
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 2014-09-29
      相关资源
      最近更新 更多