一步一步升级配置14: Mysql数据库,hibernate.dialect 使用MySQL5_MySQL
Hibernate
一步一步升级配置14:Mysql数据库,hibernate.dialect使用org.hibernate.dialect.MySQL5Dialect替代org.hibernate.dialect.MySQLDialect
一.背景:
最近一个项目,使用的hibernatejpa正向生成数据库表主键及索引index
不过,发现一些表, @Entity类里面明明写了index
/**
* Gets the商品标题,不能超过300字节.
*
*@returnthe商品标题,不能超过300字节
*/
@Column(name ="TITLE", length = 300)
@Index(name ="I_PRODUCT_ITEM_TITLE")
publicStringgetTitle() {
returntitle;
}
但是生成的数据库表, title字段却没有索引
二.故障排查
2.1 checkcolumn type
检查了下这张表的title字段,发现 title字段的类型是longtext
2.2 check create index log
并且执行,hibernate.hbm2ddl.autoupdate的时候,发现log 里面有这么两句
19:56:36.352 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - create index I_PRODUCT_ITEM_TITLE on T_PRODUCT_ITEM (TITLE)
19:56:36.389 [main] ERROR o.h.tool.hbm2ddl.SchemaUpdate -Unsuccessful: create index I_PRODUCT_ITEM_TITLE on T_PRODUCT_ITEM (TITLE)
longtext类型的字段,不可以创建索引
2.3 try fix(尝试1):
我将length改成200,成功创建了varchar(200)的字段
并且成功创建了索引
20:04:57.481 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - alter table T_PRODUCT_ITEM add column TITLE varchar(200)
20:04:57.768 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - create index I_PRODUCT_ITEM_TITLE on T_PRODUCT_ITEM (TITLE)
2.4 try fix(尝试2):
我将length改成260,又是longtext类型
2.5 try fix(尝试3):
多次尝试,发现临界点在length255
三.思考:
3.1如果要交差,那么让大家把所有>255的字段的长度都改成255
但是这不是我的性格,我的性格是"事出反常必有妖"
3.2问题是,为毛length>255的字段生成的表字段却是longtext类型的?
原以为是我的hibernate/hibernate-annotations版本(3.5.1-Final)太低了,
我尝试了升级到3.6.10-Final/3.5.6-Final,结果还是longtext类型
后来一想,肯定是hibernatemapping mysql数据库,生成表的地方有问题,就想看看String和数据库字段匹配的地方
我们原来使用的是 org.hibernate.dialect.MySQLDialect
四.源码:
4.1 org.hibernate.dialect.MySQLDialect
源码中:
原来在这里,如果长度
否则创建longtext类型
这里有个文章: http://dev.mysql.com/doc/refman/5.0/en/char.html
在mysql5.0.3之前,varchar最大长度是255,在5.0.3之后的版本是65535长度
4.2 org.hibernate.dialect.MySQL5Dialect
源码中,还有个MySQL5Dialect
如果长度
否则创建longtext类型
尝试着将sessionFactoryhibernateProperties中的hibernate.dialect换成org.hibernate.dialect.MySQL5Dialect
(扩展阅读: 开箱即用(配置过程),使用spring减少配置hibernate mapping的痛苦(AnnotationSessionFactoryBean))
重新执行hibernate.hbm2ddl.autoupdate
20:24:31.375 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - alter table T_PRODUCT_ITEM add column TITLE varchar(300)
20:24:31.661 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - create index I_PRODUCT_ITEM_TITLE on T_PRODUCT_ITEM (TITLE)
成功创建varchar(300)字段,并且成功创建索引
参考:
http://dev.mysql.com/doc/refman/5.0/en/char.html

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Fermats letzter Satz steht kurz davor, von der KI erobert zu werden? Und das Bedeutsamste an der ganzen Sache ist, dass der letzte Satz von Fermat, den die KI gerade lösen wird, genau dazu dient, zu beweisen, dass KI nutzlos ist. Früher gehörte die Mathematik zum Bereich der reinen menschlichen Intelligenz; heute wird dieses Gebiet von fortschrittlichen Algorithmen entschlüsselt und mit Füßen getreten. Bild Der letzte Satz von Fermat ist ein „berüchtigtes“ Rätsel, das Mathematikern seit Jahrhunderten Rätsel aufgibt. Es wurde 1993 bewiesen, und jetzt haben Mathematiker einen großen Plan: den Beweis mithilfe von Computern nachzubilden. Sie hoffen, dass etwaige logische Fehler in dieser Version des Beweises durch einen Computer überprüft werden können. Projektadresse: https://github.com/riccardobrasca/flt

Titel: Erfahren Sie mehr über PyCharm: Eine effiziente Möglichkeit, Projekte zu löschen. In den letzten Jahren wurde Python als leistungsstarke und flexible Programmiersprache von immer mehr Entwicklern bevorzugt. Bei der Entwicklung von Python-Projekten ist es entscheidend, eine effiziente integrierte Entwicklungsumgebung zu wählen. Als leistungsstarke integrierte Entwicklungsumgebung stellt PyCharm Python-Entwicklern viele praktische Funktionen und Tools zur Verfügung, darunter das schnelle und effiziente Löschen von Projektverzeichnissen. Im Folgenden konzentrieren wir uns auf die Verwendung von delete in PyCharm

Teilen Sie die einfache und leicht verständliche PyCharm-Projektpaketierungsmethode. Mit der Popularität von Python verwenden immer mehr Entwickler PyCharm als Hauptwerkzeug für die Python-Entwicklung. PyCharm ist eine leistungsstarke integrierte Entwicklungsumgebung, die viele praktische Funktionen bietet, die uns helfen, die Entwicklungseffizienz zu verbessern. Eine der wichtigen Funktionen ist die Projektverpackung. In diesem Artikel wird auf einfache und leicht verständliche Weise vorgestellt, wie Projekte in PyCharm verpackt werden, und es werden spezifische Codebeispiele bereitgestellt. Warum Paketprojekte? Entwickelt in Python

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung, die eine Fülle von Entwicklungstools und Umgebungskonfigurationen bietet und es Entwicklern ermöglicht, Code effizienter zu schreiben und zu debuggen. Bei der Verwendung von PyCharm für die Python-Projektentwicklung müssen wir manchmal das Projekt in eine ausführbare EXE-Datei packen, um es auf einem Computer auszuführen, auf dem keine Python-Umgebung installiert ist. In diesem Artikel wird erläutert, wie Sie mit PyCharm ein Projekt in eine ausführbare EXE-Datei konvertieren, und es werden spezifische Codebeispiele aufgeführt. Kopf

So erstellen Sie eine Einkaufsliste auf dem iPhone in iOS17. Das Erstellen einer Einkaufsliste in der Erinnerungen-App ist sehr einfach. Sie fügen einfach eine Liste hinzu und füllen sie mit Ihren Artikeln. Die App sortiert Ihre Artikel automatisch in Kategorien und Sie können sogar mit Ihrem Partner oder Ihrer Wohnungspartnerin zusammenarbeiten, um eine Liste der Dinge zu erstellen, die Sie im Geschäft kaufen müssen. Hier sind die vollständigen Schritte dazu: Schritt 1: iCloud-Erinnerungen aktivieren So seltsam es auch klingen mag, Apple sagt, dass Sie Erinnerungen von iCloud aktivieren müssen, um eine Einkaufsliste unter iOS17 zu erstellen. Hier sind die Schritte dafür: Gehen Sie zur App „Einstellungen“ auf Ihrem iPhone und tippen Sie auf [Ihr Name]. Wählen Sie als Nächstes i aus

Als Technologie-Blogger bevorzuge ich ChatGPT, um eine Verbindung zu WeChat, DingTalk und Knowledge Planet herzustellen (falls Sie es noch nicht gesehen haben, können Sie den vorherigen Artikel lesen, den ich kürzlich gelesen habe). Quellprojekte, ein ChatGPTWebUI-Projekt entdeckt. Da ich ChatGPT noch nie zuvor mit WebUI verbunden habe, ist es wirklich gut, dieses Open-Source-Projekt nutzen zu können. Hier sind die praktischen Installationsschritte, die ich mit allen teilen kann. Der Installationsbeamte stellt in der Projektdokumentation von Github viele Installationsmethoden bereit, darunter manuelle Installation, Docker-Bereitstellung und Remote-Bereitstellung. Es ist erstaunlich, dass ich bei der Auswahl einer Bereitstellungsmethode zunächst an Einfachheit gedacht habe.

Lösung des Fehlers beim Starten des React-Projekts: 1. Geben Sie den Projektordner ein, starten Sie das Projekt und sehen Sie sich die Fehlermeldung an. 2. Führen Sie den Befehl „npm install“ oder „npm install React-Scripts“ aus. 3. Führen Sie „npm install“ aus @ant-design/ pro-field --save"-Befehl.

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung (IDE), die umfangreiche Funktionen bietet, die Entwicklern helfen, Python-Projekte effizienter zu schreiben und zu verwalten. Bei der Entwicklung von Projekten mit PyCharm müssen wir manchmal einige Projekte löschen, die nicht mehr benötigt werden, um Speicherplatz freizugeben oder die Projektliste zu bereinigen. In diesem Artikel wird detailliert beschrieben, wie Projekte in PyCharm gelöscht werden, und es werden spezifische Codebeispiele bereitgestellt. So löschen Sie ein Projekt: Öffnen Sie PyCharm und rufen Sie die Projektlistenoberfläche auf. In der Projektliste
