问题列表 - 第6页

如何在 MySQL 5.5 中轻松地将 utf8 表转换为 utf8mb4

我有一个现在需要支持 4 字节字符(中文)的数据库。幸运的是,我已经在生产环境中安装了 MySQL 5.5。

所以我只想将所有 utf8_bin 归类为 utf8mb4_bin。

我相信除了一点存储开销之外,这种变化没有性能损失/收益。

mysql

110
推荐指数
6
解决办法
19万
查看次数

ALTER TABLE - 重命名列

这让我发疯!

我想在我的博客表中将一列从 read-more 重命名为 read_more

我尝试了所有这些:

  ALTER TABLE blog RENAME COLUMN read-more to read_more;
  ALTER TABLE blog CHANGE COLUMN 'read-more' 'read_more' VARCHAR(255) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

我总是得到这个!

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMN read-more to read_more' at line 1
Run Code Online (Sandbox Code Playgroud)

我正在使用 MySQL 5.5

mysql mysql-5 mysql-5.5

109
推荐指数
2
解决办法
38万
查看次数

mysql:显示所有用户的 GRANTs

MySQL的SHOW GRANTS显示当前用户的权限。

有没有办法以root身份登录并显示所有用户的权限?

mysql permissions

107
推荐指数
7
解决办法
29万
查看次数

Postgres 更新...限制 1

我有一个 Postgres 数据库,其中包含有关服务器集群的详细信息,例如服务器状态(“活动”、“待机”等)。活动服务器在任何时候都可能需要故障转移到备用服务器,我不在乎特别使用哪个备用服务器。

我想要一个数据库查询来更改备用服务器的状态 - 只有一个 - 并返回要使用的服务器 IP。选择可以是任意的:因为服务器的状态随着查询而改变,所以选择哪个备用数据库并不重要。

是否可以将我的查询限制为一次更新?

这是我到目前为止所拥有的:

UPDATE server_info SET status = 'active' 
WHERE status = 'standby' [[LIMIT 1???]] 
RETURNING server_ip;
Run Code Online (Sandbox Code Playgroud)

Postgres 不喜欢这样。我可以做些什么不同的事情?

postgresql concurrency update queue

107
推荐指数
1
解决办法
10万
查看次数

如何在 PostgreSQL 中指定新列的位置?

如果我有一个包含列的表:

id | name | created_date
Run Code Online (Sandbox Code Playgroud)

并想添加一列,我使用:

alter table my_table add column email varchar(255)
Run Code Online (Sandbox Code Playgroud)

然后在列之后添加created_date列。

有什么办法可以指定新列的位置吗?例如,我可以在之后添加它name并得到一个表格,如:

id | name | email | created_date
Run Code Online (Sandbox Code Playgroud)

postgresql database-design

106
推荐指数
3
解决办法
12万
查看次数

如何在没有密码提示的情况下使用 psql?

我写了一个脚本来REINDEX索引数据库中的索引。这是其中之一:

echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE}
psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;"
if [[ ${?} -eq 0 ]]; then
    echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE}
else
    echo "reindex for unq_vbvdata_vehicle failed" >> ${LOG_FILE}
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

问题是我无法在独立模式下运行此脚本。psql每次运行都提示输入密码。还有两个限制:

  1. 我无法在没有密码的数据库上创建用户。

  2. 因为REINDEX锁表,我应该sleep <num>在每个REINDEX.

有没有自动解决方案?

postgresql psql

106
推荐指数
4
解决办法
20万
查看次数

'拒绝访问; 尝试转储表空间时,您需要(至少其中之一)此操作的 PROCESS 特权

我正在尝试使用该命令备份 mysql

mysqldump -u root -p  database_name > backup.sql
Run Code Online (Sandbox Code Playgroud)

,但它抛出一个错误:

'拒绝访问; 尝试转储表空间时,您需要(至少其中之一)此操作的 PROCESS 特权

另外,我想备份我的数据库,并将所有表单独存储为一个文件。我该怎么做?

mysql 版本 = 5.7.31

mysql mysqldump mysql-5.7

106
推荐指数
3
解决办法
8万
查看次数

为什么要同时使用 TRUNCATE 和 DROP?

在我工作的系统中有很多使用临时表的存储过程和 SQL 脚本。使用这些表后,最好删除它们。

我的许多同事(几乎所有人都比我更有经验)通常会这样做:

TRUNCATE TABLE #mytemp
DROP TABLE #mytemp
Run Code Online (Sandbox Code Playgroud)

我通常DROP TABLE在我的脚本中使用单个。

在 aTRUNCATE之前立即执行 a 有什么好的理由DROP吗?

sql-server sybase truncate

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

MySQL有什么方法可以更快地导入一个巨大的(32 GB)sql转储?

我有这个巨大的 32 GB SQL 转储,我需要将其导入 MySQL。我以前不必导入如此庞大的 SQL 转储。我做了通常的:

mysql -uroot dbname < dbname.sql
Run Code Online (Sandbox Code Playgroud)

时间太长了。有一个大约有 3 亿行的表,在大约 3 小时内达到了 150 万行。因此,整个过程似乎需要 600 小时(即 24 天)并且不切实际。所以我的问题是,有没有更快的方法来做到这一点?

更多信息/调查结果

  1. 这些表都是 InnoDB 并且没有定义外键。但是,有很多索引。
  2. 我无权访问原始服务器和数据库,因此无法进行新备份或进行“热”复制等。
  3. 此处innodb_flush_log_at_trx_commit = 2建议的设置似乎没有(明显可见/指数级)改进。
  4. 导入期间的服务器统计信息(来自 MySQL Workbench):https : //imgflip.com/gif/ed0c8。
  5. MySQL 版本是 5.6.20 社区。
  6. innodb_buffer_pool_size = 16M 和 innodb_log_buffer_size = 8M。我需要增加这些吗?

mysql innodb mysqldump backup

104
推荐指数
4
解决办法
15万
查看次数

数十亿行数据的最佳数据库和表设计

我正在编写一个需要存储和分析大量电气和温度数据的应用程序。

基本上,我需要存储过去几年和未来数万个地点的大量每小时用电量测量值,然后以不太复杂的方式分析数据。

我需要(目前)存储的信息是位置 ID、时间戳(日期和时间)、温度和电力使用情况。

关于需要存储的数据量,这是一个近似值,但大致如下:
20 000 多个位置,每月 720 条记录(每小时测量,每月大约 720 小时),120 个月(10 年前) ) 和未来许多年。简单的计算得出以下结果:

20 000 个位置 x 720 条记录 x 120 个月(10 年前)= 1 728 000 000 条记录。

这些是过去的记录,新记录将每月导入,因此每月大约有 20 000 x 720 = 14 400 000 条新记录。

总位置也将稳步增长。

对于所有这些数据,需要执行以下操作:

  1. 检索特定日期和时间段的数据:某个位置 ID 在 01.01.2013 和 01.01.2017 之间以及 07:00 和 13:00 之间的所有记录。
  2. 特定日期和时间范围的简单数学运算,例如 MIN、MAX 和 AVG 温度以及特定位置 ID 5 年 07:00 至 13:00 之间的用电量。

数据将每月写入一次,但会被数百名用户(至少)不断读取,因此读取速度更为重要。

我没有使用 NoSQL 数据库的经验,但从我收集到的信息来看,它们是此处使用的最佳解决方案。我已经阅读了最流行的 NoSQL 数据库,但由于它们完全不同,并且还允许非常不同的表架构,我一直无法决定使用什么是最好的数据库。

我的主要选择是 Cassandra 和 MongoDB,但由于我的知识非常有限,而且在大数据和 NoSQL 方面没有实际经验,我不太确定。我还读到 …

nosql database-design database-recommendation

104
推荐指数
5
解决办法
16万
查看次数