diff --git a/drivers/mysql/mysql.go b/drivers/mysql/mysql.go
index bf3a4bd19..adc22fcec 100644
--- a/drivers/mysql/mysql.go
+++ b/drivers/mysql/mysql.go
@@ -95,7 +95,7 @@ SELECT
END) AS key_type,
s.index_name, GROUP_CONCAT(s.column_name ORDER BY s.seq_in_index SEPARATOR ', '), s.index_type
FROM information_schema.statistics AS s
-LEFT JOIN information_schema.columns AS c ON s.column_name = c.column_name
+LEFT JOIN information_schema.columns AS c ON s.table_schema = c.table_schema AND s.table_name = c.table_name AND s.column_name = c.column_name
WHERE s.table_name = c.table_name
AND s.table_schema = ?
AND s.table_name = ?
@@ -142,29 +142,28 @@ SELECT
kcu.referenced_table_name,
GROUP_CONCAT(kcu.referenced_column_name ORDER BY kcu.ordinal_position, position_in_unique_constraint SEPARATOR ', ') AS referenced_column_name
FROM information_schema.key_column_usage AS kcu
-LEFT JOIN information_schema.columns AS c ON kcu.column_name = c.column_name
+LEFT JOIN information_schema.columns AS c ON kcu.table_schema = c.table_schema AND kcu.table_name = c.table_name AND kcu.column_name = c.column_name
LEFT JOIN
(
SELECT
+ kcu.table_schema,
+ kcu.table_name,
kcu.constraint_name,
kcu.column_name,
- (CASE WHEN c.column_key='PRI' THEN 'PRIMARY KEY'
+ (CASE WHEN c.column_key='PRI' THEN 'PRIMARY KEY'
WHEN c.column_key='UNI' THEN 'UNIQUE'
WHEN c.column_key='MUL' AND kcu.referenced_table_name IS NULL THEN 'UNIQUE'
WHEN c.column_key='MUL' AND kcu.referenced_table_name IS NOT NULL THEN 'FOREIGN KEY'
ELSE 'UNKNOWN'
END) AS costraint_type
FROM information_schema.key_column_usage AS kcu
- LEFT JOIN information_schema.columns AS c ON kcu.column_name = c.column_name
- WHERE
- kcu.table_name = c.table_name
- AND kcu.table_name = ?
+ LEFT JOIN information_schema.columns AS c ON kcu.table_schema = c.table_schema AND kcu.table_name = c.table_name AND kcu.column_name = c.column_name
+ WHERE kcu.table_name = ?
AND kcu.ordinal_position = 1
) AS sub
-ON kcu.constraint_name = sub.constraint_name
-WHERE kcu.table_name = c.table_name
-AND kcu.table_schema= ?
-AND kcu.table_name = ?
+ON kcu.constraint_name = sub.constraint_name AND kcu.table_schema = sub.table_schema AND kcu.table_name = sub.table_name
+WHERE kcu.table_schema= ?
+ AND kcu.table_name = ?
GROUP BY kcu.constraint_name, sub.costraint_type, kcu.referenced_table_name`, tableName, s.Name, tableName)
defer constraintRows.Close()
if err != nil {
@@ -183,6 +182,7 @@ GROUP BY kcu.constraint_name, sub.costraint_type, kcu.referenced_table_name`, ta
)
err = constraintRows.Scan(&constraintName, &constraintType, &constraintColumnName, &constraintRefTableName, &constraintRefColumnName)
if err != nil {
+ fmt.Printf("%s\n", tableName)
return errors.WithStack(err)
}
switch constraintType {
diff --git a/output/dot/templates.go b/output/dot/templates.go
index cba526583..f129d6638 100644
--- a/output/dot/templates.go
+++ b/output/dot/templates.go
@@ -6,24 +6,24 @@ import (
"github.com/jessevdk/go-assets"
)
-var _Assets5bd148e6149bb9adcdddfcf8cc46d6e3047dbe26 = "digraph \"{{ .Table.Name }}\" {\n // Config\n graph [rankdir=TB, layout=dot, fontname=\"Arial\"];\n node [shape=record, fontsize=14, margin=0.6, fontname=\"Arial\"];\n edge [fontsize=10, labelfloat=false, splines=none, fontname=\"Arial\"];\n\n // Tables\n \"{{ .Table.Name }}\" [shape=none, label=<
\n {{ .Table.Name | html }} [{{ .Table.Type | html }}] |
\n {{- range $ii, $c := .Table.Columns }}\n {{ $c.Name | html }} [{{ $c.Type }}] |
\n {{- end }}\n
>];\n {{- range $i, $t := .Tables }}\n \"{{ $t.Name }}\" [shape=none, label=<\n {{ $t.Name | html }} [{{ $t.Type | html }}] |
\n {{- range $ii, $c := $t.Columns }}\n {{ $c.Name | html }} [{{ $c.Type | html }}] |
\n {{- end }}\n
>];\n {{- end }}\n\n // Relations\n {{- range $i, $r := .Relations }}\n \"{{ $r.Table.Name }}\":{{ $c := index $r.Columns 0 }}{{ $c.Name }} -> \"{{ $r.ParentTable.Name }}\":{{ $pc := index $r.ParentColumns 0 }}{{ $pc.Name }} [dir=back, arrowtail=crow, {{ if $r.IsAdditional }}style =\"dashed\",{{ end }} taillabel=<>];\n {{- end }}\n}\n"
var _Assets21532ae17ad95976ac467eeaeab81f2bb1d537e4 = "digraph \"{{ .Schema.Name }}\" {\n // Config\n graph [rankdir=TB, layout=dot, fontname=\"Arial\"];\n node [shape=record, fontsize=14, margin=0.6, fontname=\"Arial\"];\n edge [fontsize=10, labelfloat=false, splines=none, fontname=\"Arial\"];\n\n // Tables\n {{- range $i, $t := .Schema.Tables }}\n \"{{ $t.Name }}\" [shape=none, label=<\n {{ $t.Name | html }} [{{ $t.Type | html }}] |
\n {{- range $ii, $c := $t.Columns }}\n {{ $c.Name | html }} [{{ $c.Type | html }}] |
\n {{- end }}\n
>];\n {{- end }}\n\n // Relations\n {{- range $j, $r := .Schema.Relations }}\n \"{{ $r.Table.Name }}\":{{ $c := index $r.Columns 0 }}{{ $c.Name }} -> \"{{ $r.ParentTable.Name }}\":{{ $pc := index $r.ParentColumns 0 }}{{ $pc.Name }} [dir=back, arrowtail=crow, {{ if $r.IsAdditional }}style=\"dashed\",{{ end }} taillabel=<>];\n {{- end }}\n}\n"
+var _Assets5bd148e6149bb9adcdddfcf8cc46d6e3047dbe26 = "digraph \"{{ .Table.Name }}\" {\n // Config\n graph [rankdir=TB, layout=dot, fontname=\"Arial\"];\n node [shape=record, fontsize=14, margin=0.6, fontname=\"Arial\"];\n edge [fontsize=10, labelfloat=false, splines=none, fontname=\"Arial\"];\n\n // Tables\n \"{{ .Table.Name }}\" [shape=none, label=<\n {{ .Table.Name | html }} [{{ .Table.Type | html }}] |
\n {{- range $ii, $c := .Table.Columns }}\n {{ $c.Name | html }} [{{ $c.Type }}] |
\n {{- end }}\n
>];\n {{- range $i, $t := .Tables }}\n \"{{ $t.Name }}\" [shape=none, label=<\n {{ $t.Name | html }} [{{ $t.Type | html }}] |
\n {{- range $ii, $c := $t.Columns }}\n {{ $c.Name | html }} [{{ $c.Type | html }}] |
\n {{- end }}\n
>];\n {{- end }}\n\n // Relations\n {{- range $i, $r := .Relations }}\n \"{{ $r.Table.Name }}\":{{ $c := index $r.Columns 0 }}{{ $c.Name }} -> \"{{ $r.ParentTable.Name }}\":{{ $pc := index $r.ParentColumns 0 }}{{ $pc.Name }} [dir=back, arrowtail=crow, {{ if $r.IsAdditional }}style =\"dashed\",{{ end }} taillabel=<>];\n {{- end }}\n}\n"
// Assets returns go-assets FileSystem
-var Assets = assets.NewFileSystem(map[string][]string{"/": []string{"table.dot.tmpl", "schema.dot.tmpl"}}, map[string]*assets.File{
- "/": &assets.File{
- Path: "/",
- FileMode: 0x800001ed,
- Mtime: time.Unix(1530601073, 1530601073988948963),
- Data: nil,
- }, "/table.dot.tmpl": &assets.File{
+var Assets = assets.NewFileSystem(map[string][]string{"/": []string{"schema.dot.tmpl", "table.dot.tmpl"}}, map[string]*assets.File{
+ "/table.dot.tmpl": &assets.File{
Path: "/table.dot.tmpl",
FileMode: 0x1a4,
- Mtime: time.Unix(1530601073, 1530601073989234926),
+ Mtime: time.Unix(1530370605, 1530370605000000000),
Data: []byte(_Assets5bd148e6149bb9adcdddfcf8cc46d6e3047dbe26),
+ }, "/": &assets.File{
+ Path: "/",
+ FileMode: 0x800001ed,
+ Mtime: time.Unix(1530370605, 1530370605000000000),
+ Data: nil,
}, "/schema.dot.tmpl": &assets.File{
Path: "/schema.dot.tmpl",
FileMode: 0x1a4,
- Mtime: time.Unix(1530601073, 1530601073988379044),
+ Mtime: time.Unix(1530370605, 1530370605000000000),
Data: []byte(_Assets21532ae17ad95976ac467eeaeab81f2bb1d537e4),
}}, "")
diff --git a/output/md/templates.go b/output/md/templates.go
index aac4a29d6..8614546e3 100644
--- a/output/md/templates.go
+++ b/output/md/templates.go
@@ -10,20 +10,20 @@ var _Assetsac44302fb6150a621aa9d04a0350aac972bf7e18 = "# {{ .Table.Name }}\n\n##
var _Assets43889384df1c6f74d764c29d91b9d5637eb46061 = "# {{ .Schema.Name }}\n\n## Tables\n{{ range $t := .Tables }}\n|{{ range $d := $t }} {{ $d | nl2br }} |{{ end }}\n{{- end }}\n\n{{ if .er -}}\n## Relations\n\n\n{{- end }}\n\n---\n\n> Generated by [tbls](https://github.com/k1LoW/tbls)"
// Assets returns go-assets FileSystem
-var Assets = assets.NewFileSystem(map[string][]string{"/": []string{"table.md.tmpl", "index.md.tmpl"}}, map[string]*assets.File{
- "/table.md.tmpl": &assets.File{
- Path: "/table.md.tmpl",
- FileMode: 0x1a4,
- Mtime: time.Unix(1532306958, 1532306958025479578),
- Data: []byte(_Assetsac44302fb6150a621aa9d04a0350aac972bf7e18),
+var Assets = assets.NewFileSystem(map[string][]string{"/": []string{"index.md.tmpl", "table.md.tmpl"}}, map[string]*assets.File{
+ "/": &assets.File{
+ Path: "/",
+ FileMode: 0x800001ed,
+ Mtime: time.Unix(1532239511, 1532239511000000000),
+ Data: nil,
}, "/index.md.tmpl": &assets.File{
Path: "/index.md.tmpl",
FileMode: 0x1a4,
- Mtime: time.Unix(1532306958, 1532306958024679356),
+ Mtime: time.Unix(1532239511, 1532239511000000000),
Data: []byte(_Assets43889384df1c6f74d764c29d91b9d5637eb46061),
- }, "/": &assets.File{
- Path: "/",
- FileMode: 0x800001ed,
- Mtime: time.Unix(1532306958, 1532306958025410318),
- Data: nil,
+ }, "/table.md.tmpl": &assets.File{
+ Path: "/table.md.tmpl",
+ FileMode: 0x1a4,
+ Mtime: time.Unix(1532239511, 1532239511000000000),
+ Data: []byte(_Assetsac44302fb6150a621aa9d04a0350aac972bf7e18),
}}, "")