我试图删除一个表并使用以下代码变体截断它。以下所有版本都给出了相同的错误。
代码:放置“清除数据库表: program_slots”ProgramSlot.destroy_all ProgramSlot.destroy_all 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正确的语法是什么?我在execute语句中插入的下划线似乎不是经过.......Notice的,错误语句试图找到一个名为"program_slots“的表,但真正的表名是”program_slots“。
我该怎么解决这个问题?
发布于 2013-12-04 16:02:48
MySQL表名区分大小写,这就是#1和#3失败的原因。如果要使用引号,那么需要为MySQL使用正确的引号,这就是#2失败的原因。我不知道为什么:
ActiveRecord::Base.connection.execute("TRUNCATE TABLE program_slots")不起作用。如果没有,您可以使用这个:
ActiveRecord::Base.connection.execute("TRUNCATE TABLE `program_slots`")注意有角度的单引号。
https://stackoverflow.com/questions/20378885
复制相似问题