小编Uni*_*One的帖子

不可能MySQL插入...选择外键约束错误‽

这令我感到困惑,希望有人可以提供帮助.

查询:

insert into `shelter_pages` (`userid`,`relid`)
select :userid, `id` from `shelter` where `stage`='egg' order by rand() limit 30
Run Code Online (Sandbox Code Playgroud)

简单吧?获取符合条件的30个随机行,并将其与用户ID一起保存在"页面"表中.

错误:

SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(`db_name` .shelter_pages`,CONSTRAINT`shelter_pages_ibfk_2` FOREIGN KEY(`relid`)REFERENCES`shelter`(`id `)ON UPETE CASCADE ON UPDATE CASCADE)

那怎么可能呢?它实际上是`shelter`.`id`SELECT查询中使用这些值并且INSERT它们如何,外键检查如何可能失败?

如果它具有任何重要性,那么所讨论的表格相当"繁忙" - 它是游戏元素的一部分,任何玩家都可以从收容所"采用",从而删除该行.这就像我认为原子操作中的竞争条件一样简单吗?

mysql sql table-structure

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

ListView PullToRefresh 在上方一行下隐藏“拉动刷新”字符串

我正在创建一个 QML 布局,里面有一个Column和多个Rows。第一行包含一个按钮,第二行包含从网络服务中检索到的项目列表。我希望能够做到“拉刷新”就行了,所以我用PullToRefreshListView

但是,这会将可见字符串“Pull to refresh...”添加到行输出的顶部,实际上出现在第一行的顶部附近。这种是有道理的,除了我希望该文本隐藏第一行,直到它在第二行中的列表被拉出时滑出。

这是要重现的最小 QML,可以使用以下命令运行qmlscene

import QtQuick 2.4
import QtQuick.XmlListModel 2.0
import Ubuntu.Components 1.3

MainView {

    id: root
    width: units.gu(50)
    height: units.gu(75)

    Column {
        Row {
            Button {
                id: selector
                text: "Select"
            }
        }
        Row {
            ListView {
                id: listOfThings
                height: 500
                width: 400
                model: things
                delegate: Text {
                    text: title + " (" + pubDate + ")"
                }
                PullToRefresh {
                    refreshing: things.status …
Run Code Online (Sandbox Code Playgroud)

listview qml qtquick2 pull-to-refresh ubuntu-touch

5
推荐指数
0
解决办法
597
查看次数

列出gensym符号不评估内部宏

我正在尝试编写一个宏,它接受一系列变量和一组代码,并确保在执行代码体之后变量恢复为原始值(在Paul Graham的ANSI Common Lisp中练习10.6 ).

但是,我不清楚为什么我的gensym预期会在一个地方进行评估,而不是另一个类似的评估(注意:我知道这个练习有更好的解决方案.我只是想弄清楚为什么评价的差异).

这是第一个定义,其中lstgensym计算到lambda传递给下面的列表mapcar:

(defmacro exec-reset-vars-1 (vars body)
  (let ((lst (gensym)))
    `(let ((,lst ,(reduce #'(lambda (acc var) `(cons ,(symbol-value var) ,acc))
                          vars
                          :initial-value nil)))
         ,@body
         ,@(mapcar #'(lambda (var) `(setf ,var (car ,lst)))
                   vars))))
Run Code Online (Sandbox Code Playgroud)

虽然它完全按照我的预期工作,但它并不是一个正确的解决方案,因为我总是抓住lst尝试重置值时的第一个元素.我真的想映射2个列表.所以现在我写道:

(defmacro exec-reset-vars-2 (vars body)
  (let ((lst (gensym)))
    `(let ((,lst ,(reduce #'(lambda (acc var) `(cons ,(symbol-value var) ,acc))
                          vars
                          :initial-value nil)))
         ,@body
         ,@(mapcar #'(lambda (var val) `(setf ,var ,val))
                   vars …
Run Code Online (Sandbox Code Playgroud)

lisp macros common-lisp

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