MySQL分层数据帮助-闭表方法

2024-04-12

我正在尝试在 MySQL 中实现一个系统来存储分层数据。我决定继续实施该系统here http://www.slideshare.net/billkarwin/models-for-hierarchical-data正如所描述的比尔·卡尔文 https://stackoverflow.com/users/20860/bill-karwin从第 40 号幻灯片开始。我正在尝试设置数据库,以便EntryPaths表是自动维护的。

Update:我已经更新了数据库创建 SQL 一点。我想我已经完成了 1/2 的更新工作。运行数据库创建 SQL 后尝试以下操作

首先看看这个条目的样子

-- Example query to return a full library entry (0x02 is the entry iD)
SELECT `Library`.* FROM `Library`
LEFT JOIN `EntryPaths` ON `Library`.`iD` = `EntryPaths`.`descendant`
WHERE `EntryPaths`.`ancestor` = 0x02
ORDER BY `Library`.`subsectionOf`, `Library`.`subsectionOrder`

这看起来怎么样

-- Example query to return a full library entry (0x08 is the entry iD)
SELECT `Library`.* FROM `Library`
LEFT JOIN `EntryPaths` ON `Library`.`iD` = `EntryPaths`.`descendant`
WHERE `EntryPaths`.`ancestor` = 0x08
ORDER BY `Library`.`subsectionOf`, `Library`.`subsectionOrder`

查看的第一个条目有多个子项,第二个条目没有子项。运行以下更新将“College Years”节点(及其子节点)重新设置为John Doe

UPDATE  `Library` SET  `subsectionOf` =  0x08 WHERE  `Library`.`iD` = 0x04;

如果您重新运行上述两个 select 语句,您将看到项目已从Jane Doe但它们还没有被添加到John Doe正如预期的那样。这Library_Update触发器有问题,但我已经没有办法修复它了。

数据库使用示例数据创建 SQL:

-- MYSQL
SET FOREIGN_KEY_CHECKS=0;
DROP TRIGGER IF EXISTS Library_Insert;
DROP TRIGGER IF EXISTS Library_Update;
DROP TABLE IF EXISTS Users;
DROP TABLE IF EXISTS Attributes;
DROP TABLE IF EXISTS LibraryHistory;
DROP TABLE IF EXISTS EntryPaths;
DROP TABLE IF EXISTS Library;
SET FOREIGN_KEY_CHECKS=1;


CREATE TABLE `Users` (
    `iD`              VARBINARY(16) NOT NULL,   -- UUID & PK
    `libraryID`       VARBINARY(16),            -- Library UUID & FK (The library entry for this person)
    `email`           NVARCHAR(255) NOT NULL,   -- Email address
    `nickname`        NVARCHAR(255) NOT NULL,   -- Nickname used for display
    `firstname`       NVARCHAR(255),            -- Real first name
    `lastname`        NVARCHAR(255),            -- Real last name
    `joinDate`        DATETIME NOT NULL,        -- Date the account was created
    PRIMARY KEY (`iD`)
) ENGINE = MYISAM;


CREATE TABLE `Library` (
    `iD`              VARBINARY(16) NOT NULL,   -- UUID & PK
    `name`            NVARCHAR(500) NOT NULL,   -- Name for the entry
    `contentType`     NVARCHAR(50)  NOT NULL,   -- Mime type of data
    `content`         LONGBLOB      NOT NULL,   -- Data a for the entry
    `subsectionOf`    VARBINARY(16),            -- Library UUID & FK
    `subsectionOrder` INT,                      -- Oder of Subsections 
    `lastModifiedBy`  VARBINARY(16),            -- User UUID & FK
    `lastModified`    DATETIME      NOT NULL,   -- Last time the record was updated
    PRIMARY KEY (`iD`),
    FOREIGN KEY (`subsectionOf`) REFERENCES Library(`iD`) ON DELETE CASCADE,
    FOREIGN KEY (`lastModifiedBy`) REFERENCES Users(`iD`),
    INDEX(`name`)
) ENGINE = MYISAM;

-- Trigger to update the EntryPaths table for new entries
DELIMITER //
CREATE TRIGGER `Library_Insert` AFTER INSERT ON `Library` FOR EACH ROW 
BEGIN
    INSERT INTO `EntryPaths` (`ancestor`, `descendant`, `len`)
        SELECT `ancestor`, NEW.`iD`, len + 1 FROM `EntryPaths`
            WHERE `descendant` = NEW.`subsectionOf`
            UNION ALL SELECT NEW.`iD`, NEW.`iD`, 0;
END; //
DELIMITER ;


DELIMITER //
CREATE TRIGGER `Library_Update` BEFORE UPDATE ON `Library` FOR EACH ROW 
BEGIN
    -- Add the old entry into the history table
    INSERT INTO `LibraryHistory` VALUES(UNHEX(REPLACE(UUID(),'-','')),
        OLD.`iD`, OLD.`name`, OLD.`contentType`, OLD.`content`,
        OLD.`subsectionOf`, OLD.`subsectionOrder`, OLD.`lastModifiedBy`,
        OLD.`lastModified`);

    -- From http://www.mysqlperformanceblog.com/2011/02/14/moving-subtrees-in-closure-table/
    IF OLD.`subsectionOf` != NEW.`subsectionOf` THEN
        -- Remove the node from its current parent
        DELETE a FROM `EntryPaths` AS a
        JOIN `EntryPaths` AS d ON a.`descendant` = d.`descendant`
        LEFT JOIN `EntryPaths` AS x
        ON x.`ancestor` = d.`ancestor` AND x.`descendant` = a.`ancestor`
        WHERE d.`ancestor` = OLD.`iD` AND x.`ancestor` IS NULL;

        -- Add the node to its new parent
        -- FIXME: Not Working yet
        INSERT `EntryPaths` (`ancestor`, `descendant`, `len`)
        SELECT supertree.`ancestor`, subtree.`descendant`, supertree.`len`+subtree.`len`+1
        FROM `EntryPaths` AS supertree JOIN `EntryPaths` AS subtree
        WHERE subtree.`ancestor` = NEW.`iD`
        AND supertree.`descendant` = NEW.`subsectionOf`;
    END IF;
END; //
DELIMITER ;


CREATE TABLE `EntryPaths` (
    `ancestor`      VARBINARY(16) NOT NULL,
    `descendant`    VARBINARY(16) NOT NULL,
    `len`           VARBINARY(16) NOT NULL,
    PRIMARY KEY (`ancestor`, `descendant`),
    FOREIGN KEY (`ancestor`) REFERENCES Library(`iD`) ON DELETE CASCADE,
    FOREIGN KEY (`descendant`) REFERENCES Library(`iD`) ON DELETE CASCADE
) ENGINE = MYISAM;


CREATE TABLE `LibraryHistory` (
    `iD`              VARBINARY(16) NOT NULL,   -- UUID & PK
    `libraryID`       VARBINARY(16) NOT NULL,   -- Library UUID & FK
    `name`            NVARCHAR(500) NOT NULL,   -- Name for the entry
    `contentType`     NVARCHAR(50)  NOT NULL,   -- Mime type of data
    `content`         LONGBLOB      NOT NULL,   -- Data a for the entry
    `subsectionOf`    VARBINARY(16),            -- Library UUID & FK
    `subsectionOrder` INT,                      -- Oder of Subsections 
    `lastModifiedBy`  VARBINARY(16),            -- User UUID & FK
    `lastModified`    DATETIME      NOT NULL,   -- Last time the record was updated
    PRIMARY KEY (`iD`),
    FOREIGN KEY (`libraryID`) REFERENCES Library(`iD`) ON DELETE CASCADE,
    FOREIGN KEY (`lastModifiedBy`) REFERENCES Users(`iD`)
) ENGINE = MYISAM;


CREATE TABLE `Attributes` (
    `iD`              VARBINARY(16) NOT NULL,  -- UUID & PK  (Potentially could be removed)
    `libraryID`       VARBINARY(16) NOT NULL,  -- Library UUID & FK
    `name`            NVARCHAR(500) NOT NULL,  -- Name of attribute
    `dataType`        INT           NOT NULL,  -- The type of data the attribute holds (int, date, string, etc.)
    `data`            NVARCHAR(500) NOT NULL,  -- Value of attribute
    `lastModifiedBy`  VARBINARY(16),           -- User UUID & FK
    `lastModified`    DATETIME      NOT NULL,  -- Last time the record was updated
    PRIMARY KEY (`iD`),
    FOREIGN KEY (`libraryID`) REFERENCES Library(`iD`) ON DELETE CASCADE,
    INDEX (`name`)
) ENGINE = MYISAM;

ALTER TABLE `Users` ADD CONSTRAINT FK_User_Library FOREIGN KEY (`libraryID`) REFERENCES Library(`iD`);

-- Example Data
INSERT INTO `Library` VALUES(0x01, 'People', 'text/plain', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', NULL, NULL, NULL, '2011-11-16 20:27:54');
INSERT INTO `Library` VALUES(0x02, 'Jane Doe', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', NULL, NULL, NULL, '2011-11-16 20:29:13');
INSERT INTO `Library` VALUES(0x03, 'Younger Years', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', 0x02, 1, NULL, '2011-11-16 00:00:00');
INSERT INTO `Library` VALUES(0x04, 'College Years', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', 0x02, 2, NULL, '2011-11-16 20:31:52');
INSERT INTO `Library` VALUES(0x05, 'Yale', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', 0x04, 2, NULL, '2011-11-16 20:32:44');
INSERT INTO `Library` VALUES(0x06, 'Old Age', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar find me here scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', 0x02, 3, NULL, '2011-11-16 20:31:52');
INSERT INTO `Library` VALUES(0x07, 'Community College', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', 0x04, 1, NULL, '2011-11-16 20:33:11');
INSERT INTO `Library` VALUES(0x08, 'John Doe', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', NULL, NULL, NULL, '2011-11-16 20:34:40');
INSERT INTO `Library` VALUES(0x09, 'Planets', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', NULL, NULL, NULL, '2011-11-16 20:27:54');
INSERT INTO `Library` VALUES(0x10, 'Earth', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', NULL, NULL, NULL, '2011-11-16 20:27:54');
INSERT INTO `Library` VALUES(0x11, 'Mars', 'text/x-markup', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pulvinar scelerisque quam, vel convallis turpis porttitor in. Curabitur pulvinar fermentum pulvinar. Mauris lorem lacus, gravida porta lacinia vitae, dictum ac eros. Aliquam magna arcu, lacinia ac dictum sed, euismod eu elit. Sed semper nulla at velit pulvinar in vehicula risus tempus. Phasellus id nisl libero, id porttitor purus. Integer aliquet semper aliquam. Morbi elit mi, pellentesque et ornare nec, iaculis gravida elit. Sed in luctus lorem. Maecenas a purus at lectus condimentum congue.', NULL, NULL, NULL, '2011-11-16 20:27:54');
INSERT INTO `Attributes` VALUES(0x01, 0x02, 'TypeOf', 1, 0x01, NULL, '2011-11-16 20:34:40');
INSERT INTO `Attributes` VALUES(0x02, 0x02, 'BirthDate', 2, '19770521', NULL, '2011-11-16 20:34:40');
INSERT INTO `Attributes` VALUES(0x03, 0x02, 'EyeColor', 3, 'Brown', NULL, '2011-11-16 20:34:40');
INSERT INTO `Attributes` VALUES(0x04, 0x08, 'TypeOf', 1, 0x01, NULL, '2011-11-16 20:34:40');
INSERT INTO `Attributes` VALUES(0x05, 0x08, 'BirthDate', 2, '19740521', NULL, '2011-11-16 20:34:40');
INSERT INTO `Attributes` VALUES(0x06, 0x10, 'TypeOf', 1, 0x08, NULL, '2011-11-16 20:34:40');
INSERT INTO `Attributes` VALUES(0x07, 0x11, 'TypeOf', 1, 0x08, NULL, '2011-11-16 20:34:40');

在 Libary_Update 触发器的 INSERT 语句中,您有以下行:

WHERE subtree.`ancestor` = NEW.`iD`

但您没有更新 ID 字段,因此我认为您不会有 NEW.iD 值。该行是否应该使用 OLD.iD 代替?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL分层数据帮助-闭表方法 的相关文章

  • MySQL 服务器未启动

    当我做 mysql u root p并输入my password这就是我得到的 错误 2002 HY000 无法通过套接字 var run mysqld mysqld sock 连接到本地 MySQL 服务器 2 所以我输入 systemc
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • 将记录分成两列

    我的数据库中有一个 学生 表 其中包含大约 5 000 条记录 我想将这些记录显示在two分区 如何在不执行查询两次的情况下做到这一点 仅使用单个查询 显示示例http www freeimagehosting net uploads f1
  • 显示表 FULLTEXT 索引列

    我希望运行一个查询 该查询将返回表中全文索引的列列表 该表采用 MyISAM 格式 我将使用 php 来构建查询 理想情况下 我会运行查询 它会返回信息 以便我可以构造一个以逗号分隔的列字符串 例如 名 姓 电子邮箱 这在 MySQL 中可
  • 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码

    我的 mysql 服务器停止后无法启动 命令使用 sudo etc init d mysql restart Error 重新启动 mysql 通过 systemctl mysql serviceJob for mysql service
  • MYSQL - 查找最近的前一天

    我可以以某种方式 不使用 PHP 找到一周中最近的前一天日期吗 Like 最近的上一个星期二的日期是哪一天 CURDATE INTERVAL WEEKDAY CURDATE wday IF WEEKDAY CURDATE gt wday 0
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)

    当我尝试连接 mysql 时出现以下错误 Can t connect to local MySQL server through socket var lib mysql mysql sock 2 这个错误有解决办法吗 其背后的原因可能是什
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • 在服务器上找不到本地主机或 phpMyAdmin:如何修复?

    我按照安装说明进行操作PHP MySQL and PHPMyAdmin 但是当我尝试访问时http localhost phpmyadmin 我收到此错误 未找到 在此找不到请求的 URL phpmyadmin 服务器 然后我尝试访问loc
  • 如何将ElasticSearch与MySQL集成?

    在我的一个项目中 我计划将 ElasticSearch 与 MySQL 结合使用 我已经成功安装ElasticSearch 我可以单独管理ES中的索引 但我不知道如何用 MySQL 实现同样的功能 我读过一些文件 但我有点困惑 没有明确的想
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 在 MySQL 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb

随机推荐

  • 如何通过蓝牙读取Leica DISTO的数据?

    我有一台 Leica DISTO D3a BT 它是一个测量设备 通过蓝牙发送测量结果 我编写了一些代码来获取蓝牙流 我收到了数据 但总是收到 错误 240 消息 这意味着 从用户手册来看 我不确认数据传输是否成功 我该怎么做 这是我的代码
  • Kohana 3:经过验证的模型示例

    我找到有关模型和验证的示例和教程 我说验证 或至少大部分 应该在模型中 我同意这一点 但我无法提供任何示例或教程来说明应该如何完成此操作 谁能帮我举一个简单的例子来说明如何做到这一点 模型中的规则在哪里 验证将在哪里进行 控制器如何知道验证
  • DDD和应用层

    我在DDD中添加 Stateful Stateless WebService等是应用层 应用服务 吗 从下面的链接来看 这似乎是正确的 第二个问题 我创建了一个存储库类 所有涉及存储库的方法调用都应该包装在应用程序服务中吗 或者我可以直接在
  • 删除 Firefox Web 扩展不会清除 chrome.storage.local

    好像chrome storage local即使卸载了扩展程序 也会继续存储任何数据 此行为在 Chrome 中未观察到 仅在 Firefox 中观察到 关于如何修复它有什么想法吗 这是错误 1213990 https bugzilla m
  • 非连续整数 C++ 枚举的最佳方法是什么

    继C 枚举模式 https stackoverflow com questions 12972317 count on enum c automatic我已经在这里描述过 我试图做类似的事情 但这次我想要使用的值序列不包含连续整数 代码显然
  • MS Access 无法链接到加密的后端数据库

    我有一个难题 我已经开发了一个 Access 应用程序 并准备分发它 我刚刚分割了数据库 我知道 有人说我应该从一开始就分开开发它 我没有 我还刚刚加密了后端数据库 在前端 我已链接到后端并在出现提示时输入正确的密码 链接的表现在出现在我的
  • 如何将嵌入窗口内的实时控制台会话添加到 Light Table?

    如果在 LightTable 的子窗口中嵌入一个控制台 可以减少所有编程语言开发过程中打开的窗口数量 那就太好了 最好这适用于所有平台 但至少有一个适用于 Linux 的平台会非常好 None
  • 由 create-react-app 创建后立即添加包不起作用

    我的反应很新 一天前开始 我使用 create react app 命令行来创建应用程序 我按照以下顺序尝试了 创建反应应用程序我的应用程序 npm 启动 此时应用程序运行良好 然后我做了以下事情 npm 安装 youtube api se
  • 在Android中我怎样才能知道当前的通知ID来清除通知

    现在在 android 中 我将此代码放入一个活动中 以便在按下按钮时显示通知 static int notificationCount 0 then btnNotification setOnClickListener new View
  • React Native Fetch:第二个承诺挂起

    React Native 的 fetch 出现了奇怪的问题 它以前可以工作 不确定我改变了什么 但它停止工作了 login data success fail console log doing fb login fetch host ap
  • 如何在 Laravel 4 中使用参数和 CASE 语句进行更新查询

    我正在尝试创建带有参数的 mysql UPDATE 查询 此外 如果字段不为空 我想附加到字段的末尾 为此 我使用 CASE 语句 这是我对学说的疑问 来自 silex query UPDATE table SET filed CASE W
  • EntityFramework Core Fluent 模型生成器键和属性

    好的 在实体框架 6 中 我将在一个语句中生成键和属性数据库 modelBuilder Entity
  • 如何在 Rails3 中使用 oauth 连接到 Gmail 的 IMAP 服务器?

    我找到了gmail xoauth http github com nfo gmail xoauthgem 它可以完成我需要的大部分功能 但我还需要从 Rails3 内部生成 oauth 令牌 consumer key 和consumer s
  • scala 2.9.1 中 Set4 的奇怪行为?

    从 2 8 1 迁移到 2 9 1 发现了有趣的事情 试图在控制台中写这个 gt gt import collection immutable Set Set4 gt gt new Set4 Int 1 2 3 4 它给 java lang
  • 在 iReport 中使用条件格式

    我有一份提供数据表的报告 到目前为止 该报告效果很好 现在我需要根据一些单元格的内容值对它们进行着色 我曾经在文本字段表达式中包含配色方案 例如 F MyBooleanValue true 这可行 但它很脏 而且管理和重复使用非常困难 所以
  • 在 C# 中使用 Delphi DLL

    我有一个用 Delphi 未知版本 编写的第三方 神秘 dll delphi 中的工作示例 2009 年过去 非常需要在我的 C 代码中使用所述 dll 并且几乎没有关于如何做到这一点的相关知识 这是使用这个 dll 的 Delpi 示例
  • 原子发布可以被“覆盖”吗?

    说我有atomic
  • Windows mobile C# 项目中将文件上传到服务器

    我们设置了服务器和 Windows 移动设备作为客户端 在服务器 CSI 脚本中 准备好接受来自客户端的单个文件 在Desktop中我们使用WebClient UploadFile方法将文件上传到服务器 但是在Windows Mobile中
  • 如何在C++中写入文件的中间?

    我认为这应该很简单 但到目前为止我的谷歌搜索没有帮助 我需要用 C 写入现有文件 但不一定在文件末尾 我知道当我只想将文本附加到文件中时 我可以传递标志ios app打电话时open在我的流对象上 但是 这只能让我写入文件的最末尾 而不是写
  • MySQL分层数据帮助-闭表方法

    我正在尝试在 MySQL 中实现一个系统来存储分层数据 我决定继续实施该系统here http www slideshare net billkarwin models for hierarchical data正如所描述的比尔 卡尔文 h