【问题标题】:Rails 4 - Using MySQL2 gem getting "Table doesnt exist " errorRails 4 - 使用 MySQL2 gem 得到“表不存在”错误
【发布时间】:2013-12-04 15:08:29
【问题描述】:

我试图删除一个表并使用以下代码变体截断它。以下所有版本都给我同样的错误。

代码: puts "清除数据库表:program_slots" ProgramSlot.destroy_all ActiveRecord::Base.connection.execute("TRUNCATE TABLE program_slots")

   puts "Clearing Database Table: program_slots"
ProgramSlot.destroy_all
ActiveRecord::Base.connection.execute("TRUNCATE TABLE PROGRAMSLOTS")

    puts "Clearing Database Table: program_slots"
ProgramSlot.destroy_all
ActiveRecord::Base.connection.execute("TRUNCATE TABLE 'program_slots'")

    puts "Clearing Database Table: program_slots"
ProgramSlot.destroy_all
ActiveRecord::Base.connection.execute("TRUNCATE TABLE PROGRAM_SLOTS")

表名是 program_slots

我得到的错误是:

  >> ProgramSlot Load (0.6ms)  SELECT `program_slots`.* FROM `program_slots`

     (0.8ms)  TRUNCATE TABLE PROGRAMSLOTS

     Mysql2::Error: Table 'dd_development.programslots' doesn't exist: TRUNCATE TABLE PROGRAMSLOTS

什么是正确的语法?我在执行语句中的下划线似乎没有通过.......注意错误语句试图找到一个名为“programslots”的表,但真正的表名是“program_slots”。

我该如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-4 mysql2


    【解决方案1】:

    MySQL 表名区分大小写,这就是#1 和#3 失败的原因。如果您要使用引号,那么您需要为 MySQL 使用正确的引号,这就是 #2 失败的原因。我不确定这是为什么:

    ActiveRecord::Base.connection.execute("TRUNCATE TABLE program_slots")
    

    行不通。如果没有,你可以使用这个:

    ActiveRecord::Base.connection.execute("TRUNCATE TABLE `program_slots`")
    

    注意带角度的单引号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2012-12-21
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      相关资源
      最近更新 更多