小编dm0*_*514的帖子

Mysql子数据库?? 他们叫什么

在此输入图像描述

我正在看phpmyadmin,我看到一些看起来像mysql中的子数据库.这叫什么!?当然我试图搜索谷歌,但我没有走得太远因为我甚至不知道这些东西被称为什么?模式?子数据库?任何帮助,将不胜感激.TY.

mysql phpmyadmin

3
推荐指数
2
解决办法
6504
查看次数

主键值未正确递增

我有一个 django 模型,它的 id 开始奇怪地增加。

列的 postgres 定义(从 Django 模型生成):

id | integer | not null default nextval('billing_invoice_id_seq'::regclass)

tpg=> SELECT MAX(id) FROM billing_invoice;
  max  
-------
 16260
Run Code Online (Sandbox Code Playgroud)

然后我通过 django admin 创建了一个新记录:

tpg=> SELECT MAX(id) FROM billing_invoice;
  max  
-------
 17223

tpg=> SELECT nextval('billing_invoice_id_seq');
 nextval 
---------
   17224
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个新记录,它跳过了 17224 值并插入了 17225 的主键:

tpg=> SELECT nextval('billing_invoice_id_seq');
 nextval 
---------
   17226
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?应用程序此时并不关心,因为 id 仍在增加,但在最后几个新对象中,PK 在一次插入中从 427 -> 4357 跳过,然后在 2 个对象中跳到 8378,然后在 3 个对象中跳到 97xx它跳到了 14k。

django postgresql auto-increment

2
推荐指数
1
解决办法
1186
查看次数

测试中的覆写Go方法

因此,我有Client一个具有此方法的结构,该方法UserByID向端点发出HTTP请求User。我想对该功能进行单元测试,但也不想在该功能中发出实际的HTTP请求c.Request。我想通过响应和错误控制该功能。

func (c Client) UserByID(id string) (u User, err error) {
  v := url.Values{}
  v.Set("id", id)
  opts := Request{
    HTTP: http.Request{
        Method: http.MethodGet,
        Form:   v,
    },
    URL: 'some/endpoint/users',
  }
  resp, err := c.Request(opts)
  err = json.Unmarshal(resp, &u)
  return
}
Run Code Online (Sandbox Code Playgroud)

这是存根的样子:

type mockClient struct {
  Client
  fakeUser  User
  fakeError error
}

func (mc mockClient) Request(opts Request) (resp []byte, err error) {
  resp, err = json.Marshal(mc.fakeUser)
  err = mc.fakeError
  return
}
Run Code Online (Sandbox Code Playgroud)

在一个测试中,我有类似以下内容:

client := …
Run Code Online (Sandbox Code Playgroud)

oop testing unit-testing go

2
推荐指数
1
解决办法
1535
查看次数

是否有任何性能原因将RD存储为RDMS中的逗号分隔字符串?

可能重复:
在数据库列中存储分隔列表真的那么糟糕吗?

我一直致力于几个PHP/MySQL项目,其中所有关系都以逗号分隔的字符串存储.

例如,一种常见的关系就像

(在伪代码中)

table people
id - integer
name - string
age - integer
teams - string (CSV OF integers, ex '1,3,9,21')

table teams
name - String
id - integer
Run Code Online (Sandbox Code Playgroud)

管理关系变得很麻烦.

让一个人获得所有团队:

$person = 'SELECT * FROM People WHERE id= x';

然后在PHP我一直在做类似的事情

$person['teams'] = SELECT * FROM teams WHERE id IN ($person['teams']);
Run Code Online (Sandbox Code Playgroud)

当我写这篇文章时,我意识到我可能会将它们组合在一个mysql查询中,例如:

select people.id, people.name, people.teams, teams.name from people JOIN teams ON FIND_IN_SET(teams.id, people.teams) where people.id=x
Run Code Online (Sandbox Code Playgroud)

通过这种类型的设置,我发现自己FIND_IN_SET经常使用

最后,我的问题是:创建这样的关系是否有性能优势?

根据我迄今为止的经验,FIND_IN_SET通常都在进行全表扫描.如果没有性能优势,在哪些情况下使用逗号分隔的整数列表是否有益? 在创建FIND_IN_SET时,似乎mysql设计者已经想到了一些东西.

php mysql database-design

1
推荐指数
1
解决办法
270
查看次数