当我执行以下两个查询时(我已将它们剥离到绝对必要):
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中对数据库进行别名的方法.原因是能够重命名实时的生产数据库而不会导致系统崩溃.我想我可以将数据库别名为新名称,在我闲暇时更改和部署连接到它的代码,并最终删除旧别名.
如果有更好的方法来实现这一点,请告诉我.
如果你必须创建一个类似的应用程序 - 比如一个博客应用程序,那么创建数据库模式就相对简单了.你必须创建一些表,tblPosts,tblAttachments,tblCommets,tblBlaBla ......就是这样(好吧,我知道,这有点简化,但你理解我的意思).
如果你有,你要允许用户定义模式的部分应用程序在运行时.假设您要构建一个用户可以记录任何类型数据的应用程序.一个用户想要记录他的工作时间(startTime,endTime,项目ID,描述),下一个想要收集烹饪食谱,其他人可能是股票报价,他们的婴儿每周体重,他们花在食物上的每月费用,他们的结果最喜欢的足球队或你能想到的任何东西.
您如何设计数据库来保存所有非常不同类型的数据?您是否会创建一个可以包含所有类型数据的通用模式,是否可以创建反映用户数据模式的新表,或者您是否有另外一个好主意可以做到这一点?
如果它很重要:我必须使用SQL Server/Entity Framework
database sql-server schema entity-framework entity-attribute-value
我正在测试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) 我需要在Mysql表中保存大约78亿条记录.表是读写密集型的.我必须保持每小时插入率至少0.02亿条记录.虽然在桌面上搜索不应超过10秒.我们有一个UI,用户可以根据不同的colums属性进行搜索.
大多数搜索查询可以像:
select * from mytable where prop1='sip:+100008521149' and
prop2='asdsa'
order by event_timestamp desc limit 10;
select * from mytable where prop1='sip:+100008521149'
order by event_timestamp desc limit 10;
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 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 数据库的服务器,但是我不断收到这个巨大的错误,我不知道为什么。
[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) 我有一张桌子
create table site
(
site_Id int(5),
parent_Id int(5),
site_desc varchar2(100)
);
Run Code Online (Sandbox Code Playgroud)
领域的意义:
要求是,如果我有一个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
它目前通过循环中的多个查询来实现,但我想在最少数量的查询中实现这一点.
我目前正在做的是::
投票 …
我有一个文件夹表,以id
,parent_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) 我有以下表格:
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
mysql ×7
sql ×3
performance ×2
schema ×2
sql-server ×2
algorithm ×1
alias ×1
c# ×1
database ×1
foreign-keys ×1
group-by ×1
innodb ×1
mysql-8.0 ×1
php ×1
postgresql ×1
sql-mode ×1
t-sql ×1