当我尝试将我的Rails 3应用程序部署到Heroku并且在gems文件中定义了sqlite3时,我遇到了Heroku部署问题中描述的相同场景.
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in`requirement':没有要加载的文件--sqlite3(LoadError)
任何线索为什么会这样?在ruby-forum中定义的解决方案有效,我只是想知道为什么.
我一直在网上搜索,我不知道.
基本上,有两种选择:
1)使用以下方法在Rails应用程序中使用和按天聚合从数据库中检索所有行:Subscriber.allEnumerable.group_by
@subscribers = Subscriber.all
@subscriptions_per_day = @subscribers.group_by { |s| s.created_at.beginning_of_day }
Run Code Online (Sandbox Code Playgroud)
我认为这是一个非常糟糕的主意.对于小型应用程序,从数据库中检索所有行是可以接受的,但它根本不会扩展.数据库聚合和日期功能拯救!
2)使用聚合和日期函数在数据库中运行SQL查询:
Subscriber.select('STRFTIME("%Y-%m-%d", created_at) AS day, COUNT(*) AS subscriptions').group('day')
Run Code Online (Sandbox Code Playgroud)
哪个将在此SQL查询中运行:
SELECT STRFTIME("%Y-%m-%d", created_at) AS day, COUNT(*) AS subscriptions
FROM subscribers
GROUP BY day
Run Code Online (Sandbox Code Playgroud)
好多了.现在聚合在数据库中完成,该数据库针对此类任务进行了优化,每天只有一行从数据库返回到Rails应用程序.
...但等等......现在应用程序必须在我使用MySQL的生产环境中运行!替换STRFTIME()为DATE_FORMAT().如果明天我切换到PostgreSQL怎么办?替换DATE_FORMAT()为DATE_TRUNC().
我喜欢用SQLite开发.简单易行.我也喜欢Rails与数据库无关的想法.但是为什么Rails没有提供一种方法来翻译完全相同的SQL函数,但是在每个RDBMS中都有不同的语法(这种差异真的很愚蠢,但是嘿,抱怨它为时已晚)?
我无法相信我在网上找到Rails应用程序的这一基本功能的答案很少:计算每天,每月或每年的订阅量.
告诉我我错过了什么:)
我发布这个问题已经有几年了.经验表明,我应该使用相同的数据库开发和生产.所以我现在认为数据库不可知的要求无关紧要.
开发/生产平价 FTW.
我使用SQLite(2.8.17)创建了一个Web应用程序,我现在才发现有一个SQLite3.在制作Web应用程序时,它在某种程度上避开了我的注意力,可能是由于缺少php函数的文档.
我想知道,使用SQLite3而不是SQLite有什么好处?它快得多吗?
我正在尝试使用自联接在sqlite中编写一个简单的查询.我想要具有相同成本的产品的所有ID对,但我想要唯一的对(即,即使按不同的顺序也不要两次列出相同的对).这是我得到的:
SELECT b1.Id, b2.Id
FROM Basic AS b1
LEFT JOIN Basic AS b2
ON b1.cost = b2.cost
WHERE b1.Id != b2.Id
AND b1.Cost = 5;
Run Code Online (Sandbox Code Playgroud)
所以我得到了类似的东西
23 | 101
23 | 205
24 | 103
101 | 23 <-- Duplicate!
Run Code Online (Sandbox Code Playgroud)
我尝试了DISTINCT和GROUP BY的不同组合,但我仍然得到重复对:
我尝过类似的东西
SELECT DISTINCT bp1.Id,bp2.Id ......
&... = 5 GROUP BY bp1.Id,bp2.Id;
如何摆脱重复对?有任何想法吗?
我将非常感谢你的帮助!
在我的应用程序中,我有一个listview.我通过SQLiteDatabase中的查询获取数据.当我从db获取数据时,我收到此错误:

当我从第20行到第21行时发生.

我尝试将cursor.deactivate()和cursor.close()放在regel 50上.但没有结果.任何人都知道为什么我会得到这个错误以及如何解决它?谢谢 :)
我正在寻找一种在核心数据中存储和搜索UUID的有效方法.这些UUID由分布式系统中的许多iOS设备生成.这些设备中的每一个可以存储大约20-50k UUID.
很明显,将UUID作为String存储在Core Data中会损害索引的效率.但经过一系列研究后,我发现将UUID作为二进制数据存储在核心数据中(并对其进行索引)可能效率低于将其存储为String.
由于SQLit中不支持类似BINARY或类似VARBINARY的数据类型.我想Core Data中的任何二进制数据类型的数据都存储在SQLit中的BLOB中.由于BLOB可能是要索引的最慢数据类型,因此会对性能产生不良影响.
那么任何人都可以帮忙回答,有没有更有效的方法将UUID存储在Core Data中?
我正在开发Android应用程序,其中SQlite作为数据库.我想以编程方式将某些结果从DB导出到excel文件格式,想要将excel存储到本地设备路径我遇到过以下链接
那么为Android应用程序实现导出到Excel的确切程序是什么?
我的团队在Nexus 9上发现了一个错误,我们的应用程序无法使用,因为它无法在外部文件目录上以可写模式访问数据库.它似乎只有在应用程序使用JNI时才会发生,并且只有在代码中没有包含arm64-v8a版本时才会发生.
我们当前的理论是,如果不包括arm64-v8a,Nexus 9包含一些替代版本的本机库,以便向后兼容只有armeabi或armeabi-v7a库的应用程序.似乎某些备用SQLite库中存在一个阻止上述操作的错误.
有没有人找到这个问题的解决方法?在arm64中重新构建我们所有的本地库是我们当前的轨道和最完整的解决方案,但这需要我们的时间(我们的一些库是外部的),如果可能的话,我们希望更快地解决我们的Nexus 9用户的应用程序.
您可以通过这个简单的示例项目轻松查看此问题(您需要最新的Android NDK).
ndk-build在项目目录中运行.ndk-build再次运行之前删除libs和obj文件夹来清理项目.您还需要在每个项目之后手动刷新项目ndk-build.请注意,Nexus 9上的"损坏"构建仍然适用于内部文件,但不适用于外部文件.
SRC/COM /示例/ dbtester/DBTesterActivity.java
package com.example.dbtester;
import java.io.File;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class DBTesterActivity extends Activity {
protected static final String TABLE_NAME = "table_timestamp";
static {
System.loadLibrary("DB_TESTER");
}
private File mDbFileExternal;
private File mDbFileInternal;
@Override
protected void onCreate(Bundle savedInstanceState) { …Run Code Online (Sandbox Code Playgroud) 我想在学校存储有关学生的数据.我以前做了几张桌子,比如密码和教师用的一张桌子,我稍后会把它们放在一个程序中.
我几乎从其中一个复制了create table函数,并将值更改为Pupil的信息.它在其他程序上工作正常,但我一直在:
sqlite3.OperationalError: no such table: PupilPremiumTable
Run Code Online (Sandbox Code Playgroud)
当我尝试将瞳孔添加到表中时,它出现在该行上:
cursor.execute("select MAX(RecordID) from PupilPremiumTable")
Run Code Online (Sandbox Code Playgroud)
我查看文件夹,并且有一个文件被调用PupilPremiumTable.db,之前已经创建了表,所以我不知道它为什么不起作用.
这是我的一些代码,如果您需要更多随意告诉我,正如我之前所说的那样,所以我不知道为什么它不起作用甚至什么不起作用:
with sqlite3.connect("PupilPremiumTable.db") as db:
cursor = db.cursor()
cursor.execute("select MAX(RecordID) from PupilPremiumTable")
Value = cursor.fetchone()
Value = str('.'.join(str(x) for x in Value))
if Value == "None":
Value = int(0)
else:
Value = int('.'.join(str(x) for x in Value))
if Value == 'None,':
Value = 0
TeacherID = Value + 1
print("This RecordID is: ",RecordID)
Run Code Online (Sandbox Code Playgroud) 我在房间里有一个实体
@Entity(foreignKeys ={
@ForeignKey(entity = Label.class, parentColumns = "_id", childColumns = "labelId", onDelete = CASCADE),
@ForeignKey(entity = Task.class, parentColumns = "_id", childColumns = "taskId", onDelete = CASCADE)
})
public class LabelOfTask extends Data{
@ColumnInfo(name = "labelId")
private Integer labelId;
@ColumnInfo(name = "taskId")
private Integer taskId;
}
Run Code Online (Sandbox Code Playgroud)
这个实体的sql语法如下
CREATE TABLE `LabelOfTask` (
`_id` INTEGER PRIMARY KEY AUTOINCREMENT,
`labelId` INTEGER,
`taskId` INTEGER,
FOREIGN KEY(`labelId`) REFERENCES `Label`(`_id`) ON UPDATE NO ACTION ON DELETE CASCADE ,
FOREIGN KEY(`taskId`) REFERENCES `Task`(`_id`) ON UPDATE NO ACTION …Run Code Online (Sandbox Code Playgroud) sqlite android database-design android-room android-architecture-components
sqlite ×10
android ×4
sql ×2
android-architecture-components ×1
android-ndk ×1
android-room ×1
core-data ×1
count ×1
csv ×1
database ×1
deployment ×1
excel ×1
group-by ×1
heroku ×1
ios ×1
php ×1
python ×1
sqlite2 ×1
uuid ×1