相关疑难解决方法(0)

laravel 5.4指定键太长,为什么数字191

我知道这个问题已经讨论,解决或关闭了.
但我想问的是,为什么数字191?

Schema::defaultStringLength(191);
Run Code Online (Sandbox Code Playgroud)

我试过:如果192,错了.191,好的.在此之后,我还编辑了database\migrations\xxx_user_table.php
更改此设置

$table->string('name');
Run Code Online (Sandbox Code Playgroud)

成为

$table->string('name', 255);
Run Code Online (Sandbox Code Playgroud)

然后运行php artisan migrate,没关系.使用一些mysql工具查看用户表的模式,varchar的名称长度实际为255,其他列为191.

我看到这些文章
@ https://laravel-news.com/laravel-5-4-key-too-long-error
@ Laravel迁移:唯一密钥太长,即使指定
@ https://github.com/ laravel/framework/issues/17508
@ https://laravel.com/docs/master/migrations#creating-indexes

这个:@ https://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

对于使用REDUNDANT或COMPACT行格式的InnoDB表,索引键前缀长度限制为767字节.例如,您可能会在TEXT或VARCHAR列上使用超过255个字符的列前缀索引达到此限制,假设为utf8mb3字符集,并且每个字符最多包含3个字节.

但为什么长度255的名字还可以?
并且192*3 = 576,小于767,为什么192不行?

laravel

9
推荐指数
1
解决办法
6554
查看次数

如何更改Mysql的连接排序规则

如何更改mysql数据库的连接排序规则?

我在ubuntu 14中使用Mysql workbench 5.5和mysql 5.5.

当我执行存储过程时,会发生错误:

错误代码:1267.操作'='的非法混合排序(utf8_general_ci,IMPLICIT)和(utf8_unicode_ci,IMPLICIT)

我通过互联网搜索,它有一个临时解决方案,即修改

COLLATE utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

在存储过程中.

但我想在将来为所有存储过程解决此问题.我已经找到

SHOW VARIABLES LIKE 'collation%';
Run Code Online (Sandbox Code Playgroud)

返回这个.

collation_connection    utf8_general_ci
collation_database  utf8_unicode_ci
collation_server    latin1_swedish_ci
Run Code Online (Sandbox Code Playgroud)

如何更改utf8_general_ciutf8_unicode_ci

mysql collation

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

Node,Sequelize,Mysql - 如何为模型定义排序规则和字符集?

我使用sequelize/w节点和node-mysql.

我使用sequelize-cli创建模型,结果如下:

'use strict';
module.exports = function(sequelize, DataTypes) {
  let songs = sequelize.define('songs', {
    name: DataTypes.STRING,
    link: DataTypes.STRING,
    artist: DataTypes.STRING,
    lyrics: DataTypes.TEXT,
    writer: DataTypes.STRING,
    composer: DataTypes.STRING
  });

  return songs;
};
Run Code Online (Sandbox Code Playgroud)

我希望能够为模型的每个属性定义排序规则和字符集.默认排序规则是'latin1_swedish_ci',我需要'utf-8'.

任何人?TNX

mysql node.js express sequelize.js

8
推荐指数
1
解决办法
9326
查看次数

PyMySQL 警告:(1366,“不正确的字符串值:'\\xF0\\x9F\\x98\\x8D t...')

我正在尝试使用 Pandas 和 MySQL 将数据(推文和其他 Twitter 文本信息)导入到数据库中。我收到以下错误:

166:警告:(1366,“不正确的字符串值:'\xF0\x9F\x92\x9C\xF0\x9F...' 对于第 3 行的 'text' 列”)结果 = self._query(query)

166:警告:(1366,“不正确的字符串值:'\xF0\x9F\x98\x8D t...' 列 'text' 在第 5 行”)结果 = self._query(query)

经过彻底搜索后,我的数据库列的设置方式似乎有问题。我已经尝试将数据库字符集设置为 UTF8 并将其整理为 utf_unicode_ci,但我仍然收到相同的错误。

以下是将数据导入数据库的代码:

#To create connection and write table into MySQL

engine = create_engine("mysql+pymysql://{user}:{pw}@{lh}/{db}?charset=utf8"
                       .format(user="user",
                               pw="pass",
                               db="blahDB",
                               lh="bla.com/aald/"))

df.to_sql(con=engine, name='US_tweets', if_exists='replace')
Run Code Online (Sandbox Code Playgroud)

我正在导入的数据由以下数据类型组成:“int64”、“object”和“datetime64[ns]”。我通过将数据打印到控制台来发现这些数据类型

print(df['tweett']) >>> returns dtype 'object'
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助,谢谢!

python mysql utf-8 pandas pymysql

6
推荐指数
1
解决办法
8735
查看次数

如何用alembic将MySQL表转换为utf8字符集?

我的数据库是MySQL。我使用SqlAlchemy ORM定义和访问它。我使用Alembic进行迁移。我有一个模型,其中的字段曾经只包含英文文本(Ascii / latin-1)。现在,该字段需要包含Unicode文本。为了将模型转换为支持MySQL的Unicode,我需要添加以下类级别属性:mysql_character_set ='utf8'

class MyModel(Base):
    __tablename__ = 'mymodel'
    mysql_character_set = 'utf8'

    id = Column(Integer, primary_key=True)
    name = Column(String(64), unique=True, nullable=False)
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。我想将此属性添加为Alembic迁移脚本的一部分。我通常使用Alembic出色的自动生成命令:

alembic revision --autogenerate
Run Code Online (Sandbox Code Playgroud)

问题在于该命令不能捕获所有模型更改,尤其不能捕获mysql_character_set属性。

如何手动将此属性添加到Alembic迁移脚本中?

sqlalchemy alembic

5
推荐指数
1
解决办法
1751
查看次数

从String中删除不适合UTF-8编码的字符

我在网站上有一个文本区域,用户可以在其中编写任何内容.当用户复制粘贴某些文本或包含非UTF 8字符的内容并将其提交给服务器时,会出现问题.

Java成功处理它,因为它支持UTF-16,但我的mySql表支持UTF-8,因此插入失败.

我试图在业务逻辑本身中实现某种方式,删除任何不适合UTF-8编码的字符.

目前我正在使用此代码:

new String(java.nio.charset.Charset.forName("UTF-8").encode(myString).array());
Run Code Online (Sandbox Code Playgroud)

但它用其他一些不起眼的字符替换不适合UTF-8的字符.这对最终用户来说也不好看.请问有人可以使用Java代码解决任何可能的解决方案吗?

编辑:例如,插入这些值时我得到的异常

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8A\x0D\x0A...' for column

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xF0\x9F...' for column
Run Code Online (Sandbox Code Playgroud)

java mysql string encoding utf-8

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

我应该使用utf8mb4而不是utf8吗?

除了使用表情符号的能力外,utf8mb4还提供哪些实际优点和缺点?据我所知,它需要更多的空间来存储.

utf-8 utf8mb4

5
推荐指数
1
解决办法
1467
查看次数

如何使用UTF8的mysqldump?

我正在尝试使用命令获取mysql dump:

mysqldump -u xxxx -p dbxxx > xxxx270613.sql
Run Code Online (Sandbox Code Playgroud)

用UTF8获取mysqldump的命令是什么?

mysql

5
推荐指数
3
解决办法
5525
查看次数

Django 字符集和编码

我正在尝试从/向 Mysql 数据库存储和查看希腊字符。

我想使用 utf8 编码我使用以下命令更改我的数据库:

ALTER DATABASE el CHARACTER SET utf8 COLLATE utf8_general_ci
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试创建一篇文章时,我看到以下错误:

错误页面

当我试图从我的数据库中获取文章时,我看到如下内容:

mysql> select * from article_article
    -> ;
+----+------------+----------+-------------+----------------------------------------------------------------------------------+----------+------+-------+-------+--------------+---------------------+---------------------+-----------+
| id | submenu_id | title    | url         | body                                                                             | image_id | hits | votes | grade | publisher_id | time_upload         | last_modified       | published |
+----+------------+----------+-------------+----------------------------------------------------------------------------------+----------+------+-------+-------+--------------+---------------------+---------------------+-----------+
|  1 |          1 | ???????? | ssss-d-ssss | <p>&epsilon;&lambda;&lambda;&eta;&nu;&iota;&kappa;?</p>
<p>&nbsp;</p>
<p>?</p> |        9 |    0 |     0 |   2.5 |            1 | 2013-04-11 10:39:30 | 2013-04-11 11:02:01 …
Run Code Online (Sandbox Code Playgroud)

mysql django encoding tinymce

4
推荐指数
1
解决办法
5673
查看次数

工作两年后,突然在 LOAD DATA LOCAL INFILE 上出现 MYSQL“格式错误的数据包”

这是两年来的夜班工作。PHP 文件将 txt 文件导入 MYSQL 数据库。今天在导入TXT文件时突然出现格式错误的数据包。我注意到服务器只运行了 23 小时,所以我认为 GoDaddy 可以更新一些东西。

MYSQL 版本 = 5.6.43-cll-lve

local_infile = ON

如果没有“本地”,我会收到错误消息,“用户拒绝访问”,我尝试授予 FILE 但在通过 SSH 获取 mysql CLI 访问权限时遇到问题(以前从未需要它)并且 PHP MY Admin 没有访问权限。

我已经花了一整天的时间,不知道该怎么做。我也尝试将文件设置为 777。

我已经尝试删除截断部分​​并只进行导入,将导入文件剔除到 3 行,使用以前工作过的旧导入文件 - 无法制作正面或反面。

require('config_dev.php');
$path = '/home/pro/public_html/upload/IDUpload_dev.txt';
$mysqli = new mysqli($hostname,$username, $password, $dbname);

if ($mysqli->connect_error) {
  die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

$sql1 = "TRUNCATE TABLE Accounts;";

if (!$mysqli->query($sql1)) {
    echo "\nQuery execute failed: ERRNO: (" . $mysqli->errno . ") " . $mysqli->error;
} else …
Run Code Online (Sandbox Code Playgroud)

php mysql import mysqli file

3
推荐指数
1
解决办法
1412
查看次数