Tag: sqlite

通过DataMapper从SQLite内存DB中没有这样的表错误

我有一个Ruby程序,它使用DataMapper作为ORM来与内存中的SQLite DB进行通信。 这一直很好,但我刚刚添加了一个新的DM类和相应的表。 令我惊讶的是,在auto_migrate中,事情现在爆炸了! 这是DataMapper生成的SQL: ~ (0.000390) PRAGMA table_info(“sensationd_channels”) ~ (0.000010) PRAGMA table_info(“sensationd_commands”) ~ (0.000009) PRAGMA table_info(“sensationd_configurations”) ~ (0.000052) PRAGMA table_info(“sensationd_measurements”) ~ (0.000028) SELECT sqlite_version(*) ~ (0.000035) DROP TABLE IF EXISTS “sensationd_channels” ~ (0.000009) PRAGMA table_info(“sensationd_channels”) ~ (0.000423) CREATE TABLE “sensationd_channels” (“id” INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, “channel” INTEGER NOT NULL, “name” VARCHAR(50), “precision” […]

准备好的声明的内部结构是什么样的?

以下是bind_params似乎正在准备 sql语句: stmt = db.prepare( “select * from table where a=? and b=?” ) stmt.bind_params( 15, “hello” ) 所以实际上在stmt中,我们需要有map / array或者最终会映射参数并创建正确的stmt的东西。 在内部执行此操作的最佳方式是什么? 加上字符串我需要额外的预防措施 – 上面的内容必须像“select * from table a a = 15 and b = \”hello \“”一样。 我查看了SQLite3和OCI,他们似乎将这些传递给内部C代码。

Rails用于可以映射到不同模型类型的模型的活动记录关联

我正在构建一个具有User和Product类的RoR应用程序。 一个用户可能有很多照片,也可能是产品,但每个用户也必须有一个profile_picture 。 用户: class User < ActiveRecord::Base has_many :pictures end 产品介绍: class Product < ActiveRecord::Base has_many :pictures end 我正在努力定义目前的pictures模型: class Picture < ActiveRecord::Base has_one :user has_one :product end 图片的架构如下(为简洁起见,省略了时间戳): create_table “pictures”, force: true do |t| t.string “image_url” end 最后,我进行了迁移,为用户和产品添加了个人资料图片的链接 class AddPicturesToUsersAndWalks < ActiveRecord::Migration def change add_column :users, :profile_picture, :picture add_column :products, :profile_picture, :picture end […]

Heroku和Datamapper问题

我可以在Heroku上启动一个基本应用程序,显示带有’/’的消息…工作得很好。 但是,每当我尝试使用datamapper添加sqlite时,事情就会崩溃。 要查看我的应用程序结构,请查看github上的项目。 我保持代码相当简陋。 在heroku的日志中我得到: 2011-06-26T21:28:36+00:00 app[web.1]: /app/.bundle/gems/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/adapters.rb:163:in `require’: no such file to load — dm-postgres-adapter (LoadError) 关于这一点的是我没有使用postgres,所以我很困惑为什么这么说。

自动加载常量时检测到循环依赖(Rails 4,Ruby 2)

configs / routes.rb Shutters和Paints是Jobs子资源。 resources :jobs do resources :shutters resources :paints end app / models / job.rb Job包含许多Shutters和许多Paints 。 class Job lambda { |a| a[:no].blank? } accepts_nested_attributes_for :paints, allow_destroy: true, :reject_if => lambda { |a| a[:name].blank? }` app / models / shutter.rb Shutter包含属于一个Job和一个Paint 。 class Shutter < ActiveRecord::Base belongs_to :job belongs_to :paint app / models […]

为Ruby SQLite插入转义字符串

我正在创建一个Ruby脚本,将大约150k行的制表符分隔文本文件导入SQLite。 到目前为止: require ‘sqlite3’ file = File.new(“/Users/michael/catalog.txt”) string = [] # Escape single quotes, remove newline, split on tabs, # wrap each item in quotes, and join with commas def prepare_for_insert(s) s.gsub(/’/,”\\\\'”).chomp.split(/\t/).map {|str| “‘#{str}'”}.join(“, “) end file.each_line do |line| string << prepare_for_insert(line) end database = SQLite3::Database.new("/Users/michael/catalog.db") # Insert each string into the database string.each do […]

Rails3 ActiveRecord :: StatementInvalid:…每个测试都没有这样的表

我几天前开始学习rails3,从今天起,每次我为我的模型运行unit testing时,都会收到以下错误消息: ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: users: DELETE FROM “users” WHERE 1=1 昨天的测试顺利进行,我今天运行它们(从他们工作的时间开始恢复到状态)……我仍然得到错误。 我在Windows7 64位,SQLite 3.7.2,ruby 187上使用rails 3发行版(但我确实有许多ruby安装 – 使用pik选择187) 有关解决此问题的任何想法?

用sqlite在rails中的布尔值

我仍然是一个仍然使用rails的菜鸟,但我正在遇到一些似乎有些奇怪的东西。 我因此在数据库中为模型添加了一个布尔字段 t.column :admin, :bool, :default => false, :null => false 但是,sqlite3数据库中的值似乎是’t’或’f’ 。 这没关系,但我仍然期望user.admin? 如果值为’f’则返回false。 从下面的控制台会话中可以看出,情况并非如此: >> user = User.first => # >> user.admin? => true >> user.admin = false => false >> user.save => true >> user = User.first => # >> user.admin? => true 这只是sqlite的一些奇怪的问题,还是我没有得到什么?

Ruby无法在Windows上找到sqlite3驱动程序

我试图在Windows上设置Ruby on Rails。 我正在使用看起来相当不错的Flash Rails发行版,但是sqlite3存在问题。 我发现线程告诉我安装版本1.2.3,安装正常。 我正在使用ruby 1.9.0,每次我尝试运行使用数据库的脚本(例如rake db:create)时,都会收到错误消息“找不到sqlite3的驱动程序”。 这显然是一个缺少的sqlite3.dll,但我的%PATH%中有dll,我也尝试将其复制到我运行脚本的目录,即sqlite3 ruby​​代码所在的目录。 有没有人有任何想法? 如果可能的话,我希望所有的ruby都是自包含的,所以我可以用笔驱动器来使用它。 编辑:为了澄清,我已经使用gem install来安装ruby-sqlite3 gem – 它只是没有function,因为它找不到sqlite3.dll(即使它实际上存在于我的%PATH%目录中) 编辑第2部分:在做了一些挖掘后,问题似乎是ruby不会加载sqlite3_api.dll。 我已将其复制到我的文件系统上,我只是无法读取文件。 同一目录中的其他dll库(例如zlib.dll)工作正常! 我尝试将dll安装到system32中,但这也无效。

将一些对象从一个数据库迁移到另一个数据库

如何从一个数据库(开发,sqlite)转储一个用户与他的所有关联(评论,post等)以将其插入另一个(生产,mysql)。 我应该将它转储到yaml或sql或其他东西?