MySql 配置导致报错
- Row 224 was cut by GROUP_CONCAT()
# 查询当前全局配置, 尝试修改全局配置, 如果没有全局配置权限, 可以修改当前连接的配置
SELECT @@global.group_concat_max_len;
SET GLOBAL group_concat_max_len=102400;
SET group_concat_max_len=1024;
# 查询当前全局配置, 尝试修改全局配置, 如果没有全局配置权限, 可以修改当前连接的配置
SELECT @@global.group_concat_max_len;
SET GLOBAL group_concat_max_len=102400;
SET group_concat_max_len=1024;
参考文献
https://www.cnblogs.com/zhoumin6012/p/9841738.html
1、先删除之前安装出错的MySQL
cmd---->切换到C:\Program Files\MySQL\MySQL Server 8.0\bin(mysql默认安装路径)
输入命令:mysqld --remove mysql
再输入命令:mysqld --remove mysql80
2、初始化设置
输入:mysqld --initialize-insecure --user=mysql
PS: 我的在这一步能看到了报错,在my.ini增加2行配置解决了
lc-messages = en_US
lc-messages-dir = 'D:/s/mysql/MySQL/share'
3、创建服务
输入: mysqld --install mysql
4、启动服务
输入: net start mysql
5、登录mysql
输入:mysql -uroot -p
PS: 我这里是没有密码,所以直接登录就可以,如果存在密码错误,添加skip-grant-table,修改密码
6、设置密码
输入:alter user'root'@'localhost' IDENTIFIED BY 'MyPass@123456';
PS: 8.0版本密码中必需包含大小写字母、数字和字符
7、设置远程连接密码
输入:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyPass@123456';
PS:更改了mysql_native_passwd密码,等同更改用户原始密码。MYSQL 8.0 内以mysql-native_passwd为主
mysql8
ALTER USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'root';
8、刷新权限
输入:flush privileges;
查询当前状态
show variables like 'log_bin';
输出如下
Variable_name Value
------------- --------
log_bin ON
vim /etc/mysql/my.cnf
在[mysqld]后面增加一行
skip-log-bin
增加了配置后, 重新查询如下
Variable_name Value
------------- --------
log_bin OFF
时间戳为 0000-00-00 00:00:00 的处理办法
SHOW VARIABLES LIKE 'sql_mode' ;
SET @@sql_mode="STRICT_TRANS_TABLES";
SET GLOBAL SQL_MODE="STRICT_TRANS_TABLES"; # 需要权限
设置后再设置非法时间戳, 譬如2000-02-30 时会直接报错阻止设置了
lnmp安装环境的默认路径
/usr/local/nginx/conf/nginx.conf
# 将blog目录下的路由重写到blog/index.php
location /blog {
index index.php;
try_files $uri $uri/ /blog/index.php?q=$uri;
}
# 其他demo
文件找不到自动重定向到这个php文件
location /{
if (!-e $request_filename){
rewrite ^/detail/(\d+)\.html$ /detail.php?id=$1 last;
}
}
- 文件不存在时重写
location ~* ^.+.(gif|jpg|jpeg|js|css)$ {
if (!-e $request_filename) {
rewrite ^(.*)$ /../html2$1 break;
}
}
# 根目录下找文件, 如果没有找到, 再去相邻的目录做寻找
- 将某个目录下的请求重新到该目录下的index.php文件
location /blog/ {
if (!-e $request_filename) {
rewrite ^/ /blog/index.php last;
}
}
nginx -s reload
原理, 启动新的worker, 如果启动成功, 接管新的请求, 原有的worker处理完成后再关闭
如果启动新的worker失败, 抛出错误, 原有的worker不会因为配置文件导致请求无法继续
server {
listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
server_name api.wuloves.com; #将localhost修改为您证书绑定的域名,例如:www.example.com。
ssl_certificate /data/key/api.qj30.cn/api.wuloves.com.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key /data/key/api.qj30.cn/api.wuloves.com.key; #将domain name.key替换成您证书的密钥文件名。
ssl_client_certificate /data/key/ca.crt;
ssl_session_timeout 30m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
ssl_verify_client off;
location / {
proxy_pass https://api.wuloves.com/;
proxy_ssl_certificate /data/key/api.qj30.cn/api.wuloves.com.pem;
proxy_ssl_certificate_key /data/key/api.qj30.cn/api.wuloves.com.key;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
proxy_ssl_ciphers HIGH:!aNULL:!MD5;
proxy_ssl_trusted_certificate /data/key/ca.crt;
proxy_ssl_verify off;
proxy_ssl_verify_depth 2;
proxy_ssl_session_reuse on;
# 重点,转发websocket需要的设置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection $connection upgrade;
}
access_log /data/web/logs/api.wuloves.com.success.ssl.log;
error_log /data/web/logs/api.wuloves.com.error.ssl.log;
}
server {
listen 8002 ;
proxy_hide_header Access-Control-Allow-Origin; # 避免转发的头部包含这些,提前做好屏蔽
proxy_hide_header Access-Control-Allow-Credentials;
proxy_hide_header Access-Control-Allow-Methods;
proxy_hide_header Access-Control-Allow-Headers;
proxy_hide_header Access-Control-Expose-Headers;
# always 官方也给出了解释。只有在 状态码是 200,201,204,302.....的情况下,才有效。除非你使用always关键字。
add_header Access-Control-Allow-Origin * always;// 主动对请求后的数据添加头
add_header Access-Control-Allow-Credentials 'true' always;
add_header Access-Control-Allow-Methods '*' always;
add_header Access-Control-Allow-Headers 'DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization,Access-Token,X-Requested-With,*' always;
add_header Access-Control-Expose-Headers '*' always;
if ($request_method = 'OPTIONS') { // 如果是预处理请求,直接返回
# add_header Access-Control-Max-Age '120';
return 204;
}
location /course/ {
proxy_pass http://localhost:1801/;
}
location /common/ {
proxy_pass http://localhost:1802/;
}
location /gem/ {
proxy_pass http://localhost:1803/;
}
location /wechat/ {
proxy_pass http://localhost:1804/;
}
location ~ /[a-z_0-9]+(/|$)(.*) { # 访问 /*/aaa 实际请求 http://localhost:9501/aaa
# return 200 'Preferential match';
proxy_pass http://localhost:9501/$2; # 为列出来的都转发到该接口
}
}
proxy_cache_path /cache/nginx/ levels=1:2 keys_zone=mycache:64m;
server {
listen 8002 ;
# 缓存配置部分
proxy_cache mycache; # /s/nginx-1.18.0/cache; #引用mycache缓存空间;
proxy_cache_valid 200 302 1m;
proxy_cache_methods GET HEAD;
}
location /root {
# root "/data/www"; // 访问链接为 /root/1.txt 时, 实际访问路径为 /data/www/root/1.txt
# alias "/date/www"; // 访问链接为 /root/1.txt 时, 实际访问路径为 /data/www/1.txt
}
Unknown column 'date_joins.tv' in 'on clause'
SELECT tv AS '日期'
,(SELECT COUNT(1) FROM user_center.`project_users` pu
INNER JOIN (
SELECT DISTINCT use_uid FROM course.`course_order_items`
WHERE pid=1 AND state=1 AND price>1
AND complete_at>=date_joins.tv
AND complete_at<date_add(date_joins.tv,interval 1 month)
UNION
SELECT DISTINCT uid FROM common.`virtual_good_orders`
WHERE pid=1 AND state=2 AND price_total>2000
) b ON pu.pid=1 AND pu.uid=b.use_uid
and pu.pro_created_at>=date_joins.tv AND pu.pro_created_at<date_add(date_joins.tv,interval 1 month)) AS '学习人数'
FROM report.`date_joins` WHERE ty='d' AND tv>='2020-01-01' AND tv<now() and tv like '%-%-01'
SELECT tv AS '日期'
,(SELECT COUNT(1) FROM user_center.`project_users` pu
INNER JOIN (
SELECT DISTINCT use_uid FROM course.`course_order_items`
WHERE pid=1 AND state=1 AND price>1
AND complete_at>=date_joins.tv
AND complete_at<date_add(date_joins.tv,interval 1 month)
UNION
SELECT DISTINCT uid FROM common.`virtual_good_orders`
WHERE pid=1 AND state=2 AND price_total>2000
) b ON pu.pid=1 AND pu.uid=b.use_uid
-- 下面的那个 WHERE 原来是AND, 改为where就可以执行了
WHERE pu.pro_created_at>=date_joins.tv AND pu.pro_created_at<date_add(date_joins.tv,interval 1 month)) AS '学习人数'
FROM report.`date_joins` WHERE ty='d' AND tv>='2020-01-01' AND tv<now() and tv like '%-%-01'
第二条语句就可以执行, 嵌套字段的使用不可以用于条件中的 ON
里面的 AND
, 可以 ON
其中的部分AND
改为 WHERE