从MySQL到SQLite的迁移

从MySQL到SQLite的迁移,mysql,sql,ruby-on-rails,sqlite,Mysql,Sql,Ruby On Rails,Sqlite,我使用MySQL数据库,但由于我使用Rails,我知道我必须使用SQLite。现在我有两个问题: 1-现在我的计算机中有MySQL,如果我安装SQLite,会发生任何问题吗?例如,它们之间是否存在冲突 2-它们在语法上有什么区别?您可以轻松地将mysql与rails结合使用 在您的文件中: gem 'mysql' 在您的database.yml中 development: adapter: mysql username: ... password: ... database:

我使用MySQL数据库,但由于我使用Rails,我知道我必须使用SQLite。现在我有两个问题:

1-现在我的计算机中有MySQL,如果我安装SQLite,会发生任何问题吗?例如,它们之间是否存在冲突


2-它们在语法上有什么区别?

您可以轻松地将mysql与rails结合使用

在您的文件中:

gem 'mysql'
在您的database.yml中

development:
  adapter: mysql
  username: ...
  password: ...
  database: ...
毫无疑问

SQLite主要用于开发目的,因为它很容易设置数据库而不会遇到太多挫折,但是它在并发性方面(对于web应用程序很可能)的效率肯定低于MySQL之类的东西。因此,无论您是否在开发中使用SQLLite,在生产中使用MySQL(或类似的东西)都是非常明智的

为了完整性起见,SQLite还用于“一体化”软件包(如mobile development),在该软件包中,您可以轻松地将SQLite文件与应用程序捆绑在一起

如以下所述:

SQLite不打算成为一个 企业数据库引擎。事实并非如此 旨在与Oracle或 PostgreSQL

查看SQLite的另一种方法是: SQLite的设计目的不是替换 神谕它的设计目的是取代 fopen()

就Ruby的好处而言,实际上没有多少好处,因为库/ORM(即Active Record)将两个系统之间的差异抽象出来,在单个包装器中创建一致的访问层

检查这个 检查一下:)

读一下这个

什么时候应该使用SQLite,什么时候应该使用MySQl的问题已经一再出现。要知道何时何地使用SQLite或MySQL数据库管理系统是合适的,最重要的是要知道它们之间的区别,如果有区别的话

简而言之,SQLite是一个开源库,它实现了一个独立的事务性SQL数据库引擎,它不需要服务器,只需很少或根本不需要配置。另一方面MySQL也是一个开源的关系数据库管理系统

在回答这个问题时,我提供了一个详细的列表,列出了SQLite能够做得很好的一些事情,并将它们与MySQL进行了比较

SQLite是:

  • 易于设置,在许多情况下无需配置或安装 非常好,可以用于您只需要临时使用或用于测试目的的数据库
  • 不适用于需要用户管理的地方,因为SQLite使用文件系统权限,因此无法使用GRANT和REVOKE等SQL语句
  • 适合在嵌入式应用程序和安装中使用,并嵌入到应用程序本身中
  • 非常适合快速发展
  • 缺乏绩效衡量特征
  • 不适用于需要数据库上的并发事务的情况
  • 不适合大型数据库,因为SQLite将数据库存储在单个文件中,这可能受到操作系统的限制,因为SQLite无法在卷之间拆分数据
  • 不适合在需要客户机/服务器体系结构的任何情况下使用 适合中小型网站使用。这些网站平均每天点击量不超过10万次
  • 不容易扩展。除了添加列和重命名表之外,SQLite中不允许更改表
  • 适用于替代临时文件存储,通常应用程序使用fopen()、fread()和fwrite()访问文件
  • 不适用于需要存储过程以及需要某些类型的联接的情况
MySQL是:

  • 设置起来要困难得多,必须配置用户 用于创建临时数据库以及用于测试目的。只有在已经设置了MySQL数据库服务器和客户机的情况下,这才是切实可行的 非常适合管理用户及其权限
  • 不适合嵌入某些硬件,因为您仍然需要数据库的服务器组件。MySQL适合使用提供的libmysql库嵌入到应用程序中
  • 对于某些情况下的快速发展非常有用
  • 非常适合数据上的并发事务,非常适合多用户环境
  • 非常适合大规模生产应用程序,甚至可以通过群集数据库配置进行扩展
  • 非常适合在客户机/服务器体系结构设置中使用
  • 适用于每天访问量达数十亿次的小型、中型和大型网站
  • MySQL数据和表具有高度的可扩展性,MySQL DBA可以随时对其进行操作。这种扩展功能超越了磁盘、物理服务器和位置
  • 不打算替换fopen()、fread()和fwrite()。MySQL管理自己的数据文件,而不是操作系统
  • 与存储过程、触发器、视图和其他主要关系数据库管理系统常见的其他操作完全兼容。MySQL仅为选定的存储引擎提供这些功能
有了这些技巧,我当然希望它们是一个有能力的指南,当您在下一个项目中选择SQLite还是MySQL时,它们能帮助您朝着正确的方向前进

更多编辑:-- 按照以下指南学习rails

使用mysql的快速解决方案。我假设你正在使用rails 3,添加

  gem 'mysql2' 
在gem文件中运行

  bundle install
并将database.yml文件替换为

        # MySQL. Versions 4.1 and 5.0 are recommended.
        #
        # Install the MySQL driver:
        # gem install mysql2
        #
        # And be sure to use new-style password hashing:
        # http://dev.mysql.com/doc/refman/5.0/en/old-client.html
        development:
          adapter: mysql2
          encoding: utf8
          reconnect: false
          database: my_database_development
          pool: 5
          username: root
          password:
          host: localhost

        # Warning: The database defined as "test" will be erased and
        # re-generated from your development database when you run "rake".
        # Do not set this db to the same as development or production.
        test:
          adapter: mysql2
          encoding: utf8
          reconnect: false
          database: my_database_test
          pool: 5
          username: root
          password:
          host: localhost

        production:
          adapter: mysql2
          encoding: utf8
          reconnect: false
          database: my_database_production
          pool: 5
          username: root
          password:
          host: localhost
我希望他的回答对你有意义。现在给你一个更好的快速提示。开始使用谷歌吧。

“但是因为我在Rai工作