小编Bil*_*win的帖子

MySql错误150 - 外键

当我执行以下两个查询时(我已将它们剥离到绝对必要):

mysql> CREATE TABLE foo(id INT PRIMARY KEY);
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE bar ( id INT, ref INT, FOREIGN KEY (ref) REFERENCES foo(id)) ENGINE InnoDB;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:ERROR 1005(HY000):无法创建表'./test/bar.frm'(错误号:150)

****是我的错误?我盯着这个半小时没找到他.

mysql foreign-keys mysql-error-150

17
推荐指数
2
解决办法
5万
查看次数

我如何在MySQL中为数据库设置别名?

我正在寻找一种在MySQL中对数据库进行别名的方法.原因是能够重命名实时的生产数据库而不会导致系统崩溃.我想我可以将数据库别名为新名称,在我闲暇时更改和部署连接到它的代码,并最终删除旧别名.

如果有更好的方法来实现这一点,请告诉我.

mysql schema alias

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

您将如何设计数据库以允许用户定义的架构

如果你必须创建一个类似的应用程序 - 比如一个博客应用程序,那么创建数据库模式就相对简单了.你必须创建一些表,tblPosts,tblAttachments,tblCommets,tblBlaBla ......就是这样(好吧,我知道,这有点简化,但你理解我的意思).

如果你有,你要允许用户定义模式的部分应用程序在运行时.假设您要构建一个用户可以记录任何类型数据的应用程序.一个用户想要记录他的工作时间(startTime,endTime,项目ID,描述),下一个想要收集烹饪食谱,其他人可能是股票报价,他们的婴儿每周体重,他们花在食物上的每月费用,他们的结果最喜欢的足球队或你能想到的任何东西.

您如何设计数据库来保存所有非常不同类型的数据?您是否会创建一个可以包含所有类型数据的通用模式,是否可以创建反映用户数据模式的新表,或者您是否有另外一个好主意可以做到这一点?

如果它很重要:我必须使用SQL Server/Entity Framework

database sql-server schema entity-framework entity-attribute-value

16
推荐指数
4
解决办法
6085
查看次数

为什么PostgreSQL Text-Search GiST索引比GIN索引慢得多?

我正在测试PostgreSQL文本搜索功能,使用StackOverflow的9月数据转储作为样本数据.:-)

使用LIKE谓词或POSIX正则表达式匹配来搜索120万行的天真方法需要大约90-105秒(在我的Macbook上)来执行完整的表扫描搜索关键字.

SELECT * FROM Posts WHERE body LIKE '%postgresql%';
SELECT * FROM Posts WHERE body ~ 'postgresql';
Run Code Online (Sandbox Code Playgroud)

未编制索引的临时文本搜索查询大约需要8分钟:

SELECT * FROM Posts WHERE to_tsvector(body) @@ to_tsquery('postgresql'); 
Run Code Online (Sandbox Code Playgroud)

创建GIN索引大约需要40分钟:

ALTER TABLE Posts ADD COLUMN PostText TSVECTOR;
UPDATE Posts SET PostText = to_tsvector(body);
CREATE INDEX PostText_GIN ON Posts USING GIN(PostText);
Run Code Online (Sandbox Code Playgroud)

(我意识到我也可以通过将其定义为表达式索引来一步完成此操作.)

之后,由GIN索引辅助的查询运行得更快 - 这需要大约40毫秒:

SELECT * FROM Posts WHERE PostText @@ 'postgresql'; 
Run Code Online (Sandbox Code Playgroud)

但是,当我创建GiST索引时,结果完全不同.创建索引所需的时间不到2分钟:

CREATE INDEX PostText_GIN ON Posts USING GIST(PostText); …
Run Code Online (Sandbox Code Playgroud)

postgresql performance full-text-search

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

Mysql:表中有7亿条记录

我需要在Mysql表中保存大约78亿条记录.表是读写密集型的.我必须保持每小时插入率至少0.02亿条记录.虽然在桌面上搜索不应超过10秒.我们有一个UI,用户可以根据不同的colums属性进行搜索.

大多数搜索查询可以像:

  1. select * from mytable where prop1='sip:+100008521149' and prop2='asdsa' order by event_timestamp desc limit 10;

  2. select * from mytable where prop1='sip:+100008521149' order by event_timestamp desc limit 10;

  3. select * from mytable where prop2='asdsa' order by event_timestamp desc limit 10;

目前桌上有2个索引:

1- idx_1(prop1,event_timestamp)
2- idx_2(prop2,event_timestamp)
Run Code Online (Sandbox Code Playgroud)

InnoDB设置如下:

    innodb_buffer_pool_size = 70G
    innodb_log_file_size = 4G
    innodb_io_capacity=2000
    innodb_io_capacity_max=6000
    innodb_lru_scan_depth=2000
    innodb_flush_log_at_trx_commit=2
    innodb_log_buffer_size=16M
    innodb_thread_concurrency = 0
    innodb_read_io_threads = 64
    innodb_write_io_threads = 64
    innodb_autoinc_lock_mode = 2
    bulk_insert_buffer_size=33554432
    query_cache_type=1
    query_cache_size=64M
    innodb_flush_neighbors=0
    expire_logs_days=10
    max-connections=500
    long_query_time = 5
    read_buffer_size=16M
    sort_buffer_size=16M …
Run Code Online (Sandbox Code Playgroud)

mysql sql performance innodb elasticsearch

16
推荐指数
2
解决办法
5004
查看次数

如何在 MySQL 8 的 my.cnf 中设置 sql_mode?

我正在运行 MySQL 8.0.11 社区版。我需要在 my.cnf 中设置 sql_mode 以排除 ONLY_FULL_GROUP_BY 以便它重新启动安全。我尝试了以下变体:

sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql-mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Run Code Online (Sandbox Code Playgroud)

无论变量名为“sql_mode”还是“sql-mode”,它们都以相同的方式失败:

mysqld --verbose --help | grep "sql[-_]mode"
2018-06-19T15:22:51.667734Z 0 [ERROR] [MY-011071] [Server] /usr/sbin/mysqld: Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'
    --sql-mode=name     Syntax: sql-mode=mode[,mode[,mode...]]. See the manual
2018-06-19T15:22:51.675498Z 0 [ERROR] [MY-010119] [Server] Aborting
Run Code Online (Sandbox Code Playgroud)

sql模式

看起来mysqld 处理my.cnf 并将'sql_mode' 或'sql-mode' 转换为'sql_mode',然后它拒绝!

问题是如何解决这个问题?

mysql sql-mode mysql-8.0

16
推荐指数
4
解决办法
2万
查看次数

System.NotSupportedException:.Net Framework 不支持字符集“utf8mb3”

我正在尝试运行带有 MySQL 数据库的服务器,但是我不断收到这个巨大的错误,我不知道为什么。

[21:15:49,107] Server Properties Lookup: Error While Initialization
DOL.Database.DatabaseException: Table DOL.Database.ServerProperty is not registered for Database Connection...
   at DOL.Database.ObjectDatabase.SelectAllObjects[TObject]()
   at DOL.GS.ServerProperties.Properties.get_AllDomainProperties()
   at DOL.GS.ServerProperties.Properties.InitProperties()
   at DOL.GS.GameServer.InitComponent(Action componentInitMethod, String text)```

also this error

[21:15:35,991] ExecuteSelectImpl: UnHandled Exception for Select Query "DESCRIBE `Specialization`"
System.NotSupportedException: Character set 'utf8mb3' is not supported by .Net Framework.
   at MySql.Data.MySqlClient.CharSetMap.GetCharacterSet(DBVersion version, String charSetName)
   at MySql.Data.MySqlClient.MySqlField.SetFieldEncoding()
   at MySql.Data.MySqlClient.NativeDriver.GetColumnData(MySqlField field)
   at MySql.Data.MySqlClient.NativeDriver.GetColumnsData(MySqlField[] columns)
   at MySql.Data.MySqlClient.Driver.GetColumns(Int32 count)
   at MySql.Data.MySqlClient.ResultSet.LoadColumns(Int32 numCols)
   at MySql.Data.MySqlClient.ResultSet..ctor(Driver d, Int32 statementId, Int32 numCols)
   at MySql.Data.MySqlClient.Driver.NextResult(Int32 …
Run Code Online (Sandbox Code Playgroud)

c# mysql

16
推荐指数
2
解决办法
7万
查看次数

以有效和简单的方式实现等级,父/子关系

我有一张桌子

create table site
(
site_Id int(5),
parent_Id int(5),
site_desc varchar2(100)
);
Run Code Online (Sandbox Code Playgroud)

领域的意义:

  • site_Id:网站的ID
  • parent_Id:站点的父ID
  • site_desc:虽然与问题无关,但它有网站的描述

要求是,如果我有一个site_id作为输入,我需要在网站下面标记所有ID.例如:

                    A
                   / \
                  B   C
                / | \ /\
               D  E F G H
              /\
             I  J
Run Code Online (Sandbox Code Playgroud)

所有节点都是site_Id.

该表包含如下数据:

Site_id  | Parent_ID  |  site_desc
_________|____________|___________
 A       |   -1       |   
 B       |    A       |
 C       |    A       |
 D       |    B       |
 E       |    B       |
 F       |    B       |
 I       |    D       |
 J       |    D       |
Run Code Online (Sandbox Code Playgroud)

......

A是B和C的父级,依此类推.

如果B是给定的输入,那么查询需要获取D,E,I,F,J

它目前通过循环中的多个查询来实现,但我想在最少数量的查询中实现这一点.

我目前正在做的是::

投票 …

php mysql sql algorithm hierarchical-data

15
推荐指数
3
解决办法
5461
查看次数

在我的sql <8中获取树文件夹结构的父级和子级,并且没有CTE

我有一个文件夹表,以idparent_id关系与自身连接:

CREATE TABLE folders (
  id int(10) unsigned NOT NULL AUTO_INCREMENT,
  title nvarchar(255) NOT NULL,
  parent_id int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (id)
);

INSERT INTO folders(id, title, parent_id) VALUES(1, 'root', null);
INSERT INTO folders(id, title, parent_id) values(2, 'one', 1);
INSERT INTO folders(id, title, parent_id) values(3, 'target', 2);
INSERT INTO folders(id, title, parent_id) values(4, 'child one', 3);
INSERT INTO folders(id, title, parent_id) values(5, 'child two', 3);
INSERT INTO folders(id, title, parent_id) values(6, 'root 2', null);
INSERT …
Run Code Online (Sandbox Code Playgroud)

mysql sql hierarchical-data

15
推荐指数
2
解决办法
1210
查看次数

检索查询中的最新记录

我有以下表格:

tblPerson:

PersonID | Name
---------------------
   1     | John Smith
   2     | Jane Doe
   3     | David Hoshi
Run Code Online (Sandbox Code Playgroud)

tblLocation:

LocationID | Timestamp | PersonID | X | Y | Z | More Columns...
---------------------------------------------------------------
    40     | Jan. 1st  |     3    | 0 | 0 | 0 | More Info...
    41     | Jan. 2nd  |     1    | 1 | 1 | 0 | More Info...
    42     | Jan. 2nd  |     3    | 2 | 2 | 2 | More Info...
    43 …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server group-by sql-server-2005 greatest-n-per-group

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