Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用self.table_name时使用SQLite3指定数据库名称_Ruby On Rails_Sqlite_Activerecord - Fatal编程技术网

Ruby on rails 使用self.table_name时使用SQLite3指定数据库名称

Ruby on rails 使用self.table_name时使用SQLite3指定数据库名称,ruby-on-rails,sqlite,activerecord,Ruby On Rails,Sqlite,Activerecord,我有许多数据库,例如: class Foo establish_connection :database1 has_many :bars end class Bar end 在正常情况下,一切都很好。。Foo使用database1,Bar使用Rails环境数据库(根据database.yml)。不幸的是,这种联系已经破裂: Table 'database1.bars' doesn't exist 我在网上读到一些地方,我需要用self.table\u name=指定数据库名称。但是

我有许多数据库,例如:

class Foo
  establish_connection :database1
  has_many :bars
end

class Bar
end
在正常情况下,一切都很好。。Foo使用database1,Bar使用Rails环境数据库(根据database.yml)。不幸的是,这种联系已经破裂:

Table 'database1.bars' doesn't exist
我在网上读到一些地方,我需要用
self.table\u name=
指定数据库名称。但是SQLite3似乎没有数据库名称?我想做

self.table_name = '<something>.bars'
self.table_name='.bar'

在我的酒吧里。SQLite3是否可以实现这一点?

默认情况下,SQLite会创建一个名为
main
的数据库,并附加到
.db
文件。因此,您可以尝试按如下方式参考
main
数据库:

self.table_name = 'main.bars'
D:\sqlite3>sqlite3 test.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE User(user_id INTEGER PRIMARY KEY,name VARCHAR);
sqlite> INSERT INTO User(name) VALUES('dic19');
sqlite> INSERT INTO User(name) VALUES('Logan Serman');
sqlite> SELECT * FROM User;
1|dic19
2|Logan Serman
sqlite> .databases
seq  name             file
---  ---------------  ----------------------------------------------------------
0    main             D:\sqlite3\test.db
sqlite> SELECT * FROM main.User;
1|dic19
2|Logan Serman
sqlite>
更多信息见正式文件第二段

注意:不确定它是否能在Ruby上工作,我刚刚直接在sqlite上进行了如下尝试:

self.table_name = 'main.bars'
D:\sqlite3>sqlite3 test.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE User(user_id INTEGER PRIMARY KEY,name VARCHAR);
sqlite> INSERT INTO User(name) VALUES('dic19');
sqlite> INSERT INTO User(name) VALUES('Logan Serman');
sqlite> SELECT * FROM User;
1|dic19
2|Logan Serman
sqlite> .databases
seq  name             file
---  ---------------  ----------------------------------------------------------
0    main             D:\sqlite3\test.db
sqlite> SELECT * FROM main.User;
1|dic19
2|Logan Serman
sqlite>
使用
.databases
命令,您可以获得所附数据库的所有名称和文件的列表:

.databases             List names and files of attached databases
屏幕截图


那么,你有机会尝试一下我的建议吗?它起作用了吗?